Что на самом деле делает эта команда grep?

733
Sid

Я пытаюсь освоить 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?

2

1 ответ на вопрос

3
terdon
  1. What does the backslash (\) do over here?

    grep uses an "escaped" pipe (|) to mean logical OR. In other words, grep 'foo\|bar' means print any lines that contain either "foo" or "bar".

  2. What do the pipes "|" in between do?

    See answer to 1.

  3. Why is "content\|" in double quotes?

    It is not. The quotes are part of the pattern being searched for, the output of the curl command you give contains these lines:

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

    The quote (not quotes, the second " belongs to the next pattern, "remark) before the word "content" is there to make grep print only the second of the lines above. It is part of the actual search pattern: "content.

Спасибо! Это прояснило это. Также, если кому-то нужно узнать больше об этом, я нашел хороший ресурс grep здесь: http://www.cyberciti.biz/faq/howto-use-grep-command-in-linux-unix/ Sid 11 лет назад 0