Sem outras opções, -p
processa a entrada linha por linha. Nenhuma linha pode conter nada após o \n
. Você precisa alterar o separador de registro:
perl -i~ -0pe 's/ab\nba/a a/' file.txt
-
-i~
modificará o arquivo "in place", deixando um backup para trás (chamadofile.txt~
) -
-0
torna o caractere
o separador de registro de entrada. O importante é que não ocorra a substituição da string, por isso nunca lerá apenas uma parte dela.-p
-
$_
lê o registro do arquivo por registro, e depois de ler cada um, ele executa o código e imprime a variável padrão-e
- %code% apenas introduz o código.