0

我想使用 bash 脚本获取网站的编号。我首先 wget 网页,然后尝试解析页面并获取数字。

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 回答