0

bash スクリプトを使用して Web サイトの番号を取得したいと考えています。最初に Web ページを取得してから、ページを解析して数値を取得しようとします。

index.html には、必要な番号を含む長い行があります。

(...) </dl><dl class=""><dt>Year <dd>   <a title="City" href="http://example.com/City">City</a> <em>(400)</em>  </dd><dd> (...)

上記の例では400を取得したいと考えています。私は以下を実行していますが、一致しません:

CITYNUMBER=`sed -n -e 's/.*City<\/a>\s<em>(\(.*?\))<\/em>/\1/p' index.html`
4

2 に答える 2

1

これはうまくいくかもしれません(GNU sed):

sed -n -e 's/.*City<\/a>\s<em>(\([^)]*\)).*/\1/p' index.html
于 2013-08-15T06:55:53.697 に答える
0

sed 正規表現は常に貪欲であるため、.*?とにかく機能しません

実際、数字を抽出したいだけなら、grep が良い選択です:

grep -Po 'City</a>\s*<em>\(\K\d*(?=\))'

例えば:

kent$  echo '(...) </dl><dl class=""><dt>Year <dd>   <a title="City" href="http://example.com/City">City</a> <em>(400)</em>  </dd><dd> (...)'|grep -Po 'City</a>\s*<em>\(\K\d*(?=\))'
400
于 2013-08-14T23:00:20.070 に答える