0

我使用 wget 下载与 Academic.google.com 中给定查询匹配的论文数量,并获得一个显示页面所有内容的文件。

我想检索文件“大约 8,890 的结果 1 - 10”以下部分中的最后一个数字。

我试过了:

 cat /dir/file | tr -d "," | grep -o -E -- 'about ([^"]+) \w+'

但它输出:

 about <b>8890</b>.   (<b>0.12</b> sec)&nbsp;</font></td></tr></table></form>    <div class

而我只想要8890(没有逗号,由 tr -d ","

关于如何改进它的任何建议?先感谢您!

4

3 回答 3

3

Grep 拉出正确的行 - 之后使用 sed 砍掉你不想要的东西。

 cat /dir/file | tr -d "," | grep -o -E -- 'about ([^"]+) \w+' |sed -e 's/.*about <b>//' -e 's/<.b>.*//' 
于 2012-04-20T19:59:45.760 回答
0

尝试类似:sed -n 's#.*about <b>\([0-9]*\)</b>.*#\1#p'而不是grep.

-n表示默认不打印输入行,s标志p表示如果替换则打印。

于 2012-04-20T20:04:09.653 回答
0

如果您的文件中存在 html 标记 (<b></b>),您还必须修改正则表达式来处理它们。要获取您感兴趣的片段,请使用后向断言。这是应该起作用的东西: cat /dir/file | tr -d "," | grep -oP -- '(?<=about <b>)[^/<> ]+'

于 2012-04-20T20:53:57.680 回答