Was macht dieser grep-Befehl eigentlich?

791
Sid

Ich versuche, Grep in den Griff zu bekommen. Ich habe den folgenden Befehl von einem GeekLet-Skript erhalten, das jemand gemacht hat, um die Wetterinformationen von einer Website abzurufen:

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

Ich mache mir jetzt keine Sorgen um den sed-Befehl. Ich weiß, dass die Ausgabe klarer formatiert wird, aber im Moment versuche ich nur, den Befehl grep herauszufinden.

Ich habe ein paar Fragen, für die keine der Handbücher / Handbücher eine klare Antwort zu haben scheint:

  1. Was macht der Backslash ( \) hier?
  2. Was machen die Pfeifen "|" dazwischen tun?
  3. Warum ist "Inhalt \ |" in Anführungszeichen?

Auch andere Ideen / Anleitungen, von denen Sie wissen, wie sie HTML-Inhalte mit grep analysieren?

2

1 Antwort auf die Frage

3
terdon
  1. Was macht der Backslash ( \) hier?

    grepverwendet ein " Escape " -Pipe ( |), um logisches ODER zu bedeuten. Mit anderen Worten, grep 'foo\|bar'bedeutet, dass alle Zeilen gedruckt werden, die entweder "foo" oder "bar" enthalten.

  2. Was machen die Pfeifen "|" dazwischen tun?

    Siehe Antwort auf 1.

  3. Warum ist "Inhalt \ |" in Anführungszeichen?

    Es ist nicht. Die Anführungszeichen sind Teil des gesuchten Musters. Die Ausgabe des curlBefehls, den Sie angeben, enthält folgende Zeilen:

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

    Das Zitat (keine Anführungszeichen, das zweite "gehört zum nächsten Muster "remark) vor dem Wort "Inhalt" gibt grep nur die zweite der obigen Zeilen an. Es ist Teil des eigentlichen Suchmuster: "content.

Vielen Dank! Das hat es geklärt. Wenn jemand anderes mehr darüber erfahren möchte, habe ich hier eine gute grep-Ressource gefunden: http://www.cyberciti.biz/faq/howto-use-grep-command-in-linux-unix/ Sid vor 11 Jahren 0