Nunca he usado grep para analizar archivos HTML y tengo el siguiente problema:
grep -Po "(?s)(<h2>.+?<!-- /endcontent -->)" input.html > output.html
-bash: !--: event not found
También lo intenté…
grep -Po "(?s)(<h2>.+?\<!-- \/endcontent --\>)" input.html > output.html
… en vano.
¿Hay alguna manera de hacer que grep/bash analice archivos HTML o hay otra aplicación que debería usar?
Gracias.
Editar: parece que hay un truco entre Shell y grep. La búsqueda de la cadena exacta "test" funciona, mientras que ni "t.st" ni 't.st' funcionan. ¿Alguien sabe por qué?
Editar: es la opción "-P" la que rompe la expresión regular, por alguna razón.
Editar: Sí, la opción "-P" requiere duplicar el carácter de punto que representa cualquier carácter. Extraño.
grep -Po 't..st' input > output
Respuesta1
Intente usar comillas simples '
, como esta:
grep -Po '(?s)(<h2>.+?<!-- /endcontent -->)' input.html > output.html
Grep actúa de manera diferente cuando las cosas están entre comillas dobles.