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.
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.
Odpowiedzi:
Najprostszym sposobem jest skorzystanie curl
z opcji -s
za cichy:
curl -s http://somepage.com | grep whatever
curl
ing 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.
-L
przełącznikiem.
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 grep
po prostu wyświetli wszystko, co uzyska.
-q
nie ma komunikatu o błędzie.
Ten błąd został w wersji 1.1.12.1 naprawiony w innej wersji . Obecnie używam wersji 1.15 i działa zgodnie z oczekiwaniami.
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
wget
Pisze jego wyjście stderr
nie stdout
, więc trzeba przekierować stderr
do stdout
:
wget -q -O - url 2&>1 | grep keyword