如何结合wget和grep


11

我有一个html页网址,我想对其进行grep。我该怎么做wget someArgs | grep keyword

我的第一个想法是wget -q -O - url | grep keyword,但是wget的输出绕​​过grep并以原始形式出现在终端上。


grep选择以(例如)回车符和换行符分隔的行,HTML响应中没有包含带有标记的文本的行,如<br>或<p>,因此整个网页看起来像grep的一行
RedGrittyBrick

1
@RedGrittyBrick OP的命令对我而言完美无缺。
slhck 2012年

Answers:


11

最简单的方法是使用curl与该选项-s沉默:

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

@slhck:这两个命令对我来说完全一样。
丹尼斯

@Dennis尝试curl荷兰国际集团http://superuser.com/questions/431581。不管出于什么原因,我都使用此特定的URL对其进行了测试,但没有输出。邓诺我想念的是什么。
slhck 2012年

@slhck:默认情况下,Curl不遵循重定向。它与-L开关有关。
丹尼斯

@Dennis在没有看到已删除的评论的情况下不知道您在说什么,但是是的,这很有意义。感谢您清理它。
slhck

1
问题要求wget。不卷曲。这不适用于多重重定向和-L选项。
Ligemer '16

11

为了完整起见,请保持此状态。

您的示例应该可以正常工作。语法是正确的,这是我刚刚用一个不错的旧GNU wget1.13.4 演示的截屏视频

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

因此,假设您的模式是错误的,并且grep只会输出它得到的所有内容。


也可能是URL中的错字。使用-q,没有错误消息。
丹尼斯



0

wget其输出写入到stderr 不是stdout,所以人们需要的重定向stderrstdout

wget -q -O - url 2&>1 | grep keyword
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.