2

Я пытаюсь освоить grep. Я получил следующую команду из скрипта GeekLet, которую кто-то сделал для получения информации о погоде с какого-либо веб-сайта:

curl -s 'http://thefuckingweather.com/?zipcode=61820' | grep '"content\|"remark\|span' || sed 's/<[^>]*>//g' | sed 's/]*>//g' | sed 's/&#176;/°/'

Меня сейчас не беспокоит команда sed. Я знаю, что это очищает вывод для аккуратного форматирования, но сейчас я просто пытаюсь выяснить команду grep.

У меня есть пара вопросов, на которые нет четкого ответа ни на одно из руководств / руководств.

  1. Что обратная косая черта (\) делает здесь?
  2. При чем тут трубы "|" между делать?
  3. Почему «контент» | в двойных кавычках?

Также какие-либо другие идеи / руководства, которые вы знаете, которые касаются анализа html-содержимого с помощью grep?

1 ответ1

3
  1. Что обратная косая черта (\) делает здесь?

    grep использует « экранированный » канал (|) для обозначения логического ИЛИ. Другими словами, grep 'foo\|bar' означает печать любых строк, содержащих либо "foo", либо "bar".

  2. При чем тут трубы "|" между делать?

    Смотрите ответ на 1.

  3. Почему "контент" | в двойных кавычках?

    Это не. Кавычки являются частью искомого шаблона, выходные данные команды curl содержат следующие строки:

    </title><meta http-equiv="Content-Language" content="en-us" /> 
    [...]  
    <div class="content">
    

    Кавычка (не кавычки, вторая " принадлежит следующему шаблону "remark) перед словом "содержимое" заставляет grep печатать только вторую из строк выше. Это часть фактического шаблона поиска: "content .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .