O que esse comando sed faz? Como mudar isso?

0

Eu não entendo o que esse comando faz:

 grep '<span id="geodata" class="geo">[-0-9.]*; [-0-9.]*</span>' -R articles/ --only-matching | sed 's@articles//@@' | sed 's@:<span id=.geodata. class=.geo.>@ @' | sed 's@; @ @' | sed 's@</span>@@' | sort -u -b -k1 > geocodes_from_html.txt

Alguns antecedentes: Estou processando artigos wiki, tenho uma pasta ("artigos") cheia deles. O script de processamento foi escrito anos atrás, quando as informações geográficas de um lugar costumavam gostar disso:

   <span id="geodata" class="geo">[-0-9.]*; [-0-9.]*</span>

Agora parece que:

  <abbr class="latitude">[-0-9.]*</abbr><abbr class="longitude">[-0-9.]*</abbr>

Quais alterações eu preciso fazer para que o comando funcione?

    
por David 12.09.2017 / 14:57

1 resposta

1

O comando grep fornecido procura a string <span [...]</span> em qualquer arquivo, que está no diretório articles . Os seguintes comandos sed estão substituindo várias strings.

Por exemplo, sed s@articles/@@ (com apenas uma barra / ) pode ser lido como: sed search@this_string@replace_with_this@ ; a string articles/ será substituída por nada. Em vez de canalizar de um sed para o próximo, você pode combinar todos os scripts para um com o mesmo resultado.

Se você não quiser usar nenhum outro comando para extrair as coordenadas, poderá usar:

grep '<abbr class="latitude">[-0-9.]*</abbr><abbr class="longitude">[-0-9.]*</abbr>' -R articles --only-matching | sed 's@articles/@@;s@:<abbr class="latitude">@ @;s@<abbr class="longitude">@ @;s@</abbr>@@g' | sort -u -b -k1 >geocodes_from_html.txt
    
por 12.09.2017 / 16:36

Tags