我想使用bash脚本获取网站的数量。我首先忘记了网页,然后尝试解析页面并获取数字。
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`
答案 0 :(得分:1)
这可能适合你(GNU sed):
sed -n -e 's/.*City<\/a>\s<em>(\([^)]*\)).*/\1/p' index.html
答案 1 :(得分: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