0

大きなhtmlファイルから情報を抽出できるbashscriptを書き込もうとしています。毎朝最新の新聞を自動的にダウンロードするためにこれが必要です:)。最新の新聞をダウンロードするには、そのIDを知っている必要があります。それを取得するには、それを指すリンクを解析する必要があります。私はなんとか行を抽出することができました、それはawkでIDを保持しています

awk '/show.php\?id=/' index.html

取得します

<a href="show.php?id=914826">Latest Newspaper</a>

したがって、この行から必要なのは「914826」です。これは私が立ち往生しているところです...私はawkを使用して行全体ではなくフラグメントを抽出できるとは思いません。

あなたの答えを楽しみにしています。よろしくお願いします、サイモン

4

2 に答える 2

3

使用grep

grep -o 'id=[0-9]*'

例:

$ echo '<a href="show.php?id=914826">Latest Newspaper</a>' | grep -o 'id=[0-9]*'
id=914826

perlやsedでできることと同じです。

$ echo '<a href="show.php?id=914826">Latest Newspaper</a>' | perl -pe 's/.*id=([0-9]*).*/$1/'
914826
于 2012-07-02T10:25:23.990 に答える
1

この完全なawkコマンドは機能するはずです。正規表現に一致する行については、 と で分割し=ます"。例の行で次のように分割します。

  • 最初のフィールドは次のようになります。<a href=
  • 2 番目のフィールド: [空白]
  • 3 番目のフィールド:show.php?id
  • 4 番目のフィールド:914826
  • そして 5 番目のフィールド:>Latest Newspaper</a>

したがって、4 番目のもの ( arr[4]) を出力します。

awk '
    /show.php\?id=/ { 
        split( $0, arr, /[="]/ ); 
        print arr[4] 
    }
' index.html
于 2012-07-02T10:58:58.853 に答える