0

wgetを使用して、scholar.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 に答える