2012-04-20 9 views
0

私はscholar.google.com で特定のクエリに一致する論文の数をダウンロードするためにwgetを使用し、ページのすべてのコンテンツを表示するファイルを取得します。wgetのgrep htmlファイル

ファイルの次の部分の最後の番号を取得します。 "結果1 - 10の約8,890。"

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で世話をされていないカンマ "" で

をしたいのに対し、それを改善する方法についてのご意見はありますか? ありがとうございます。

答えて

0

ファイルにhtmlタグ(<b>および</b>)が存在する場合は、正規表現を修正してそれらも処理する必要があります。興味のあるフラグメントだけを取得するには、lookbehindアサーションを使用します。ここではうまくいくはずのものがあります: cat /dir/file | tr -d "," | grep -oP -- '(?<=about <b>)[^/<> ]+'

+0

これも動作します! 1本のパイプが少なくなっています。ありがとう – user1249747

3

Grep pullsあなたが望んでいないものを切り落とすために、その後にsedを使ってください。

cat /dir/file | tr -d "," | grep -o -E -- 'about ([^"]+) \w+' |sed -e 's/.*about <b>//' -e 's/<.b>.*//' 
+0

これはうまくいきました。 – user1249747

0

grepの代わりにsed -n 's#.*about <b>\([0-9]*\)</b>.*#\1#p'を試してください。

-n手段は置換されている場合sフラグp印刷手段、デフォルトとして入力線を出力しません。