¿Cómo explorar HTML usando GNU grep 2.12 y bash 4.2.37?

¿Cómo explorar HTML usando GNU grep 2.12 y bash 4.2.37?

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.

información relacionada