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"