sed
siempre elimina el \n
ewline final justo antes de llenar el espacio del patrón, y luego agrega uno antes de escribir los resultados de su script. Se \n
puede tener un ewline en el espacio de patrones por varios medios, pero nunca si no es el resultado de una edición. Esto es importante: los \n
ewlines en sed
el espacio del patrón siempre reflejan un cambio y nunca ocurren en la secuencia de entrada. \n
Las líneas electrónicas son el único delimitador con el que un sed
der puede contar con una entrada desconocida.
Si desea reemplazar todas las \n
líneas electrónicas con comas y su archivo no es muy grande, puede hacer lo siguiente:
sed 'H;1h;$!d;x;y/\n/,/'
Eso agrega cada línea de entrada al h
espacio anterior, excepto la primera, que en su lugar sobrescribe el h
espacio anterior, siguiendo un \n
carácter de línea de flujo. Luego d
elige cada línea, no la $!
última de la salida. En la última línea H
, los espacios antiguos y de patrón se x
cambian y todos los \n
caracteres de línea electrónica se y///
traducen a comas.
Para archivos grandes, este tipo de cosas pueden causar problemas: sed
el búfer en los límites de línea, que puede desbordarse fácilmente con acciones de este tipo.
tr
agregaría un final,
y generaría una línea sin terminar. Lo mejor es usarpaste
en su lugar:paste -sd , test.txt