una regulares expresiones ejemplos caracter cadena buscar regex perl multiline

regex - regulares - en perl



¿Cómo busco y sustituyo varias líneas con Perl? (2)

Puede usar el interruptor -0 para cambiar el separador de entrada:

perl -0777pe ''s/foo/nbar/FOO/nBAR/'' baz.txt

-0777 establece el separador en undef , -0 solo lo establece en /0 que podría funcionar para archivos de texto que no contienen el byte nulo.

Tenga en cuenta que /m es innecesario ya que la expresión regular no contiene ^ ni $ .

$ perl --version This is perl, v5.10.1 (*) built for x86_64-linux-gnu-thread-multi $ echo -e "foo/nbar" > baz.txt $ perl -p -e ''s/foo/nbar/FOO/nBAR/m'' baz.txt foo bar

¿Cómo puedo hacer que este reemplazo funcione?


Tiene que ver con el interruptor -p . Lee entrada una línea a la vez. Por lo tanto, no puede ejecutar una expresión regular contra una nueva línea entre dos líneas porque nunca coincidirá. Una cosa que puede hacer es leer todas las variables de modificación de entrada $/ y aplicarle la expresión regular. De una sola mano:

perl -e ''undef $/; $s = <>; $s =~ s/foo/nbar/FOO/nBAR/; print $s'' baz.txt

Cede:

FOO BAR