我使用wget下载scholar.google.com中与给定查询匹配的论文数量 我获得了一个显示该页面所有内容的文件。
我想检索文件以下部分的最后一个数字 “结果1 - 10约8,890。”
我试过了:
cat /dir/file | tr -d "," | grep -o -E -- 'about ([^"]+) \w+'
但输出:
about <b>8890</b>. (<b>0.12</b> sec) </font></td></tr></table></form> <div class
而我只想要8890(没有逗号由tr -d照顾“,”
有关如何改进它的任何建议? 提前谢谢!
答案 0 :(得分:3)
Grep拔出正确的线 - 在此之后使用sed切掉你不想要的东西。
cat /dir/file | tr -d "," | grep -o -E -- 'about ([^"]+) \w+' |sed -e 's/.*about <b>//' -e 's/<.b>.*//'
答案 1 :(得分:0)
尝试类似:sed -n 's#.*about <b>\([0-9]*\)</b>.*#\1#p'
而不是grep
。
-n
表示不打印默认输入行,s
标记p
表示替换时打印。
答案 2 :(得分:0)
如果您的文件中存在html标记(<b>
和</b>
),则必须修改正则表达式以便处理它们。要获得您感兴趣的片段,请使用lookbehind断言。这是应该工作的东西:
cat /dir/file | tr -d "," | grep -oP -- '(?<=about <b>)[^/<> ]+'