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.