sed 's/\n/\
/g'
Observe a barra invertida imediatamente antes de atingir o retorno na string de substituição.
sed
, POSIX sed
e BSD sed
de inúmeras opções. Como substituo o literal \n
pelo caractere de nova linha usando esses três sed
tipos?
sed 's/\n/\
/g'
Observe a barra invertida imediatamente antes de atingir o retorno na string de substituição.
Já que você já tem sua resposta portátil sed
, apenas mencionarei que sed
raramente é a melhor ferramenta se você precisar manipular de alguma forma as novas linhas. O Perl é quase tão portável quanto o sed
, é instalado por padrão na maioria dos sistemas * nix e pode lidar com isso muito facilmente:
printf '%s\n' 'aa\nbb' | perl -pe 's/\n/\n/g'
Outra opção muito portátil é awk
:
printf '%s\n' 'aa\nbb' | awk '{gsub("\\n","\n")};1'
No Solaris, lembre-se de usar o awk padrão em / usr / xpg4 / bin, aquele em / bin é histórico e não deve ser usado para novos scripts.
Se H
oldspace estiver vazio, você também pode fazer:
sed '/\n/G;s/\n\(.*\)\(.\)//;P;D'
... mas a resposta do uxnut já é ao mesmo tempo mais rápida e mais simples, então você pode aceitá-la como você vai.
Outra possibilidade estranha:
INPUT | sed -n l | while read v ; do printf "${v%?}" ; done
Mas cuidado, ^ que traduz todos os escapes de barra invertida padrão\
no estilo C - como \b
ackspace e \r
eturn e %code%
octals e whathaveyou.
Você precisa de uma solução em sed e isso já é fornecido abaixo. Mas eu queria acrescentar outra possibilidade de que a IMHO seja mais fácil e rápida,
tr -d "\n"