Como combinar wget e grep


11

Eu tenho um URL de página html e quero cumprimentá-lo. Como posso fazer isso wget someArgs | grep keyword?

Minha primeira idéia foi wget -q -O - url | grep keyword, mas a saída do wget ignora o grep e surge no terminal em sua forma original.


grep seleciona linhas delimitadas por (por exemplo) retorno de carro e caracteres de avanço de linha, uma resposta HTML não possui linhas com texto com marcação como <br> ou <p>, para que toda a página da Web pareça uma linha para grep
RedGrittyBrick

11
@RedGrittyBrick O comando do OP funciona perfeitamente para mim.
slhck

Respostas:


11

A maneira mais fácil é usar curlcom a opção -sde silêncio:

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

@ Sllck: Ambos os comandos fazem exatamente o mesmo por mim.
Dennis

@ Dennis Tentando curling http://superuser.com/questions/431581. Por qualquer motivo, testei-o com esse URL em particular e não obtive saída. Não sei o que estou perdendo.
slhck

@slhck: o Curl não segue os redirecionamentos por padrão. Isso acontece com o -Linterruptor.
Dennis

@Dennis Não sabia do que estava falando sem ver os comentários excluídos - mas sim, isso faz sentido. Obrigado por esclarecer.
slhck

11
A pergunta pede pelo wget. Não enrolar. Isso não funcionará com vários redirecionamentos e a opção -L.
Ligemer

11

Manter isso por uma questão de integridade.

Seu exemplo deve realmente funcionar. A sintaxe está correta, e aqui está um screencast que acabei de demonstrar , com um bom e velho GNU wget1.13.4.

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

Portanto, assuma que seu padrão está errado e grepapenas produzirá tudo o que tem.


Também pode ser um erro de digitação no URL. Com -q, não há mensagem de erro.
Dennis


3

Se você estiver procurando grep ou encabeçar cabeçalhos, eles são direcionados padrão ao stderr, então você precisa redirecioná-los. Por exemplo:

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

2
Esta é a maneira correta de fazê-lo, obrigado!
Udayraj Deshmukh 23/03

Veja também as respostas aqui
Suzana

0

Ele wgetgrava sua saída em stderr não stdout, então é necessário redirecionar o stderrpara stdout:

wget -q -O - url 2&>1 | grep keyword
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.