Por que meu regex Perl não funciona para remover certas strings seguindo novas linhas?

2

Eu tenho um texto parecido com este

text
\centering
more text

Eu quero convertê-lo para:

text
more text

Usando o Perl

Meu código é:

perl -00 -pe 's/\R+\centering\R+/\n/g' example.md

Não funciona de jeito nenhum!

Observe que isso e minha alternativa

perl -00 -pe 's/\centering/*/g' example.md

produzir o saída

text
*
more text

e

perl -00 -pe 's/\R+/\n*/g' example.md

produz

text
*\centering
*more text

Então, eles trabalham individualmente, mas não juntos. O que estou fazendo errado aqui?!

    
por Somenath Sinha 03.01.2018 / 10:28

1 resposta

2

Não use 0 como delimitador de registro, é mais conveniente usar 777

perl -0777 -pe 's/\R+\centering\R+/\n/g' example.md
#      ^^^

produz o resultado desejado.

De documentação :

The special value 00 will cause Perl to slurp files in paragraph mode. Any value 0400 or above will cause Perl to slurp files whole, but by convention the value 0777 is the one normally used for this purpose.

    
por 03.01.2018 / 10:40

Tags