O que esse comando grep realmente faz?

2

Estou tentando pegar um jeito do grep. Eu tenho o seguinte comando de um script GeekLet que alguém fez para obter as informações meteorológicas fora de algum site:

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

Eu não estou preocupado com o comando sed agora. Eu sei que limpa a saída para ser bem formatada, mas por enquanto estou apenas tentando descobrir o comando grep.

Eu tenho algumas perguntas que nenhum dos guias / manuais por aí parecem ter uma resposta clara para:

  1. O que a barra invertida ( \ ) faz aqui?
  2. O que os canos "|" entre fazer?
  3. Por que é "conteúdo \ |" entre aspas duplas?

Além disso, você conhece outras idéias / guias que abordam a análise de conteúdo HTML com o grep?

    
por Sid 07.12.2012 / 04:12

1 resposta

3
  1. O que a barra invertida ( \ ) faz aqui?

    grep usa um canal " com escape " ( | ) para significar OR lógico. Em outras palavras, grep 'foo\|bar' significa imprimir qualquer linha que contenha "foo" ou "bar".

  2. O que os pipes "|" entre fazer?

    Veja a resposta para 1.

  3. Por que "conteúdo \ |" entre aspas duplas?

    Não é. As aspas fazem parte do padrão que está sendo procurado, a saída do comando curl que você fornece contém estas linhas:

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

    A aspas (não as aspas, a segunda " pertence ao próximo padrão, "remark ) antes que a palavra "content" esteja lá para fazer grep imprimir apenas a segunda das linhas acima. Faz parte do padrão de pesquisa real: "content .

por 07.12.2012 / 15:52