Como percorrer o HTML usando o GNU grep 2.12 e o bash 4.2.37?

0

Eu nunca usei o grep para analisar arquivos HTML e estou tendo o seguinte problema:

grep -Po "(?s)(<h2>.+?<!-- /endcontent -->)" input.html > output.html
-bash: !--: event not found

Eu também tentei…

grep -Po "(?s)(<h2>.+?\<!-- \/endcontent --\>)" input.html > output.html

… sem sucesso.

Existe uma maneira de fazer com que o grep / bash analise arquivos HTML ou há outro aplicativo que eu deva usar?

Obrigado.

Edit: Parece que há um truque entre o shell e o grep. Procurando pela string exata "test" funciona, enquanto nem "t.st" nem "t.st" funcionam. Alguém sabe por quê?

Edit: É a opção "-P" que quebra o regex, por algum motivo.

Editar: Sim, a opção "-P" requer a duplicação do caractere de ponto que representa qualquer caractere. Estranho.

grep -Po 't..st' input > output
    
por OverTheRainbow 14.05.2015 / 21:48

1 resposta

0

Tente usar aspas simples em ' , desta forma:

grep -Po '(?s)(<h2>.+?<!-- /endcontent -->)' input.html > output.html

O grep age de maneira diferente quando as coisas são citadas em dobro.

    
por 14.05.2015 / 22:22

Tags