br comando não substitui um texto por caractere de nova linha

0

O comando Unix sed não reconhece uma barra invertida que escapou n \n como um caractere de nova linha. Por exemplo, o comando sed "s!,!\n!g" está substituindo vírgulas no texto de entrada pela letra n e não por um caractere de nova linha.

Como posso fazer o sed interpretar \n como um caractere de nova linha?

    
por hemanth 13.10.2015 / 20:57

4 respostas

4

Se você estiver usando bash , você pode inserir o caractere de nova linha pressionando a tecla enter como

sed 's!,!\
!g'
    
por 13.10.2015 / 21:03
2

sed "s/,/\n/g" funciona aqui, no bash

    
por 13.10.2015 / 21:26
1

Você pode precisar escapar com um segundo \

sed 's!,!\n!g'

Você também pode precisar substituir algum espaço em branco, dependendo do que estiver procurando fazer.

nos meus testes, bem sed teve problema em usar " em vez de ' 's

    
por 13.10.2015 / 21:09
0

A versão para Mac do sed tem essa dificuldade. Tente instalar a versão GNU do sed com brew install coreutils e, em seguida,

gsed "s/,/\n/g"

deve funcionar. Como alternativa, tr ',' \n deve funcionar se a string de pesquisa for apenas um caractere único.

    
por 06.05.2017 / 01:20