Uso:
sed ':a;N;$!ba;s/\n/\n/g'
Que usa a resposta de Como posso substituir uma nova linha (\ n) usando sed? substituindo um caractere de nova linha de escape como a substituição para coincidir com a questão aqui.
Usar sed
para tornar o texto que contém certos caracteres adequados para uso em literais de string é simples:
sed "s/\\/\\\\/g"
sed "s/\\"/\\\\"/g"
Mas como posso fazer algo semelhante com um arquivo de texto contendo caracteres de nova linha?
Uso:
sed ':a;N;$!ba;s/\n/\n/g'
Que usa a resposta de Como posso substituir uma nova linha (\ n) usando sed? substituindo um caractere de nova linha de escape como a substituição para coincidir com a questão aqui.
sed é baseado em linha, e isso pode causar problemas ao tentar substituir caracteres de nova linha.
a documentação oficial do sed faz uma referência específica aos caracteres da nova linha e afirma que eles são retirados antes de serem passados para o sed.
Eu sugeriria que 'tr' provavelmente seria mais adequado aqui.
como exemplo, para substituir caracteres de nova linha por espaços:
tr '\n' ' ' < inputfile
Gostaria de estender a solução David Moytan :
cat /etc/passwd | perl -e 'while(<>) { $_ =~ s/[\r\n]/__NEWLINE__/g; print "$_" }'
Eu também tive esse problema.
Você pode usar a função \ a para iniciar cada nova linha com a sequência de escape apropriada e depois canalizar a função resultante para echo -n, o que suprime as novas linhas.
echo -n $(sed '\a
\n');
Cole tudo o que você está seduzindo entre parênteses antes do comando sed.