
Nunca usei 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
… para nenhum proveito.
Existe uma maneira de fazer com que o grep/bash analise arquivos HTML ou há outro aplicativo que devo usar?
Obrigado.
Editar: parece que há um truque entre o shell e o grep. Procurar pela string exata "test" funciona, mas nem "t.st" nem 't.st' funcionam. Alguém sabe por quê?
Editar: é a opção "-P" que quebra o regex, por algum motivo.
Editar: Sim, a opção "-P" requer a duplicação do caractere ponto que representa qualquer caractere. Esquisito.
grep -Po 't..st' input > output
Responder1
Tente usar aspas simples '
, assim:
grep -Po '(?s)(<h2>.+?<!-- /endcontent -->)' input.html > output.html
Grep age de maneira diferente quando as coisas estão entre aspas duplas.