sed
sempre remove a linha de frente \n
ewline antes de preencher o espaço de padrão e, em seguida, anexa uma antes de escrever os resultados de seu script. Um \n
ewline pode ser obtido no padrão de espaço por vários meios - mas nunca se não for o resultado de uma edição. Isso é importante - \n
ewlines no espaço de padrão de sed
sempre refletem uma alteração e nunca ocorrem no fluxo de entrada. \n
ewlines são o único delimitador em que sed
der pode contar com entradas desconhecidas.
Se você quiser substituir todos os \n
ewlines por vírgulas e seu arquivo não for muito grande, faça o seguinte:
sed 'H;1h;$!d;x;y/\n/,/'
Isso anexa todas as linhas de entrada ao h
old space - exceto o primeiro, que em vez disso substitui h
old space - seguindo um caractere \n
ewline. Em seguida, d
elimina cada linha, e não a $!
da última saída. Na última linha, H
old e espaços padrão são e x
alterados e todos os caracteres \n
ewline são y///
traduzidos para vírgulas.
Para arquivos grandes, esse tipo de coisa pode causar problemas - o buffer de sed
nos limites da linha, que pode ser facilmente sobrecarregado com ações desse tipo.