Jak połączyć wget i grep


11

Mam adres URL strony HTML i chcę go grepować. Jak mogę to zrobić wget someArgs | grep keyword?

Moim pierwszym pomysłem było wget -q -O - url | grep keyword, ale wyjście wgeta omija grep i pojawia się na terminalu w jego oryginalnej formie.


grep wybiera linie rozdzielone znakami (np. powrotu karetki i wiersza), odpowiedź HTML nie ma linii z tekstem ze znacznikami takimi jak <br> lub <p>, więc cała strona internetowa może wyglądać jak jedna linia do grep
RedGrittyBrick

1
@RedGrittyBrick Polecenie OP działa dla mnie bezbłędnie.
slhck

Odpowiedzi:


11

Najprostszym sposobem jest skorzystanie curlz opcji -sza cichy:

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

@slhck: Oba polecenia robią dla mnie dokładnie to samo.
Dennis

@Dennis Spróbuj curling http://superuser.com/questions/431581. Z jakiegokolwiek powodu przetestowałem go z tym konkretnym adresem URL i nie otrzymałem danych wyjściowych. Nie wiem czego mi brakuje.
slhck

@slhck: Curl domyślnie nie śledzi przekierowań. Robi to z -Lprzełącznikiem.
Dennis

@Dennis Nie wiedziałem, o czym mówisz, nie widząc usuniętych komentarzy - ale tak, to ma sens. Dzięki za wyjaśnienie.
slhck

1
Pytanie dotyczy wget. Nie zwija się To nie zadziała z wieloma przekierowaniami i opcją -L.
Ligemer,

11

Trzymanie tego ze względu na kompletność.

Twój przykład powinien faktycznie działać. Składnia jest poprawna, a otowget zrzut ekranu, który właśnie zademonstrowałem , ze starym dobrym GNU 1.13.4.

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

Załóż więc, że twój wzór jest nieprawidłowy i greppo prostu wyświetli wszystko, co uzyska.


Może to być także literówka w adresie URL. Z -qnie ma komunikatu o błędzie.
Dennis


3

Jeśli szukasz nagłówków grep lub pipe, są one standardowo kierowane do stderr, więc musisz je przekierować. Na przykład:

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

2
To jest właściwy sposób, dzięki!
Udayraj Deshmukh

Zobacz także odpowiedzi tutaj
Suzana,

0

wgetPisze jego wyjście stderr nie stdout, więc trzeba przekierować stderrdo stdout:

wget -q -O - url 2&>1 | grep keyword
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.