Как совместить wget и grep


11

У меня есть URL-адрес HTML-страницы, и я хочу grep его. Как я могу это сделать wget someArgs | grep keyword?

Моя первая идея была wget -q -O - url | grep keyword, но вывод wget обходят grep и возникают на терминале в его первоначальном виде.


grep выбирает строки, разделенные (например) символами возврата каретки и перевода строки, в ответе HTML нет строк, в которых есть текст с разметкой, такой как <br> или <p>, поэтому вся веб-страница может выглядеть как одна строка с grep
RedGrittyBrick

1
@RedGrittyBrick Команда OP работает для меня безупречно.
slhck

Ответы:


11

Самый простой способ - использовать curlопцию -sдля молчания:

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

@slhck: обе команды делают для меня одинаково.
Деннис

@Dennis Попробуйте curlING http://superuser.com/questions/431581. По какой-то причине я проверил его с этим конкретным URL и не получил вывод. Не знаю, что я скучаю.
slhck

@slhck: Curl не выполняет перенаправления по умолчанию. Это происходит с -Lвыключателем.
Деннис

@ Денис Не знал, о чем вы говорите, не увидев удаленных комментариев - но да, это имеет смысл. Спасибо за разъяснение.
Slhck

1
Вопрос задает wget. Не скручиваемость Это не будет работать с несколькими перенаправлениями и опцией -L.
Ligemer

11

Хранить это вокруг ради полноты.

Ваш пример должен действительно работать. Синтаксис правильный, и вот скриншот, который я только что продемонстрировал , со старым добрым GNU wget1.13.4.

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

Итак, предположим, что ваш шаблон неверен и grepпросто выведет все, что получил.


Это также может быть опечатка в URL. С -q, нет сообщения об ошибке.
Деннис


3

Если вы ищете заголовки grep или pipe, они стандартно направлены на stderr, поэтому вам нужно перенаправить их. Например:

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

2
Это правильный способ сделать это, спасибо!
Удайра Дешмук

Смотрите также ответы здесь
Suzana

0

wgetЗаписывает свой вывод stderr не stdout, поэтому необходимо перенаправить stderrна stdout:

wget -q -O - url 2&>1 | grep keyword
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.