wgetとgrepを組み合わせる方法


11

HTMLページのURLがあり、それをgrepしたい。どうすればできwget someArgs | grep keywordますか?

私の最初のアイデアはでしたがwget -q -O - url | grep keyword、wgetの出力はgrepをバイパスし、元の形式で端末に表示されました。


grepは、キャリッジリターンとラインフィード文字で区切られた行を選択します。HTML応答には、<br>または<p>のようなマークアップ付きのテキストが含まれる行がないため、Webページ全体がgrepの1行のようになります
RedGrittyBrick

1
@RedGrittyBrick OPのコマンドは完璧に動作します。
slhck

回答:


11

最も簡単な方法は、サイレントcurlのオプションを使用すること-sです

curl -s http://somepage.com | grep whatever

@slhck:どちらのコマンドもまったく同じです。
Dennis

試してみてください@Dennis curlINGのhttp://superuser.com/questions/431581。何らかの理由で、この特定のURLでテストしたところ、出力がありませんでした。何が足りないの?
slhck

@slhck:デフォルトでは、Curlはリダイレクトに従いません。それはでない-Lスイッチ。
Dennis

@Dennisは、削除されたコメントを見ずに、あなたが何を話しているのか知りませんでした–しかし、そう、それは理にかなっています。片付けていただきありがとうございます。
slhck 2013年

1
質問はwgetを要求します。カールしない。これは、複数のリダイレクトと-Lオプションでは機能しません。
Ligemer

11

完全を期すためにこれを維持します。

あなたの例は実際に動くはずです。構文は正しく、ここに私がちょうどそれをデモンストレーションしたスクリーンキャストがありwgetます。古き良きGNU 1.13.4です。

wget -q some-url -O - | grep something

だからあなたのパターンが間違っていて、grepそれが得たものすべてを出力するだけだと仮定してください。


URLのタイプミスの可能性もあります。では-q、エラーメッセージは表示されません。
Dennis


3

grepまたはパイプヘッダーを探している場合、それらは標準でstderrに送信されるため、リダイレクトする必要があります。例えば:

wget -O - http://example.com/page.php > /dev/null 2>&1 | grep HTTP

2
これは正しいやり方です、ありがとう!
Udayraj Deshmukh 2018

また、答えを参照してくださいここに
Suzana

0

wget出力を書き込みstderr しないようにstdoutリダイレクトするように、1ので、ニーズstderrstdout

wget -q -O - url 2&>1 | grep keyword
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.