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

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

Eu tenho um texto parecido com este

text
\centering
more text

Quero convertê-lo para:

text
more text

Usando Perl

Meu código é:

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

Não funciona de jeito nenhum!

Observe que tanto esta quanto minha alternativa

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

produzir a 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 de errado aqui?!

Responder1

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

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

produz o resultado que você deseja.

Dedocumentação:

O valor especial 00 fará com que o Perl absorva os arquivos no modo parágrafo. Qualquer valor 0400 ou superior fará com que o Perl absorva arquivos inteiros, mas por convenção o valor 0777 é o normalmente usado para esse propósito.

informação relacionada