quot;Unión" concisa y portátil en la línea de comandos de Unix
¿Cómo puedo unir varias líneas en una línea, con un separador donde estaban los caracteres de la nueva línea, y evitando un separador final y, opcionalmente, ignorando las líneas vacías?
Ejemplo. Considere un archivo de texto,foo.txt
, con tres líneas:
foo
bar
baz
La salida deseada es:
foo,bar,baz
El comando que estoy usando ahora:
tr '\n' ',' <foo.txt |sed 's/,$//g'
Idealmente sería algo como esto:
cat foo.txt |join ,
Qué es:
la forma más portátil, concisa y legible.la forma más concisa utilizando herramientas de Unix no estándar.Por supuesto que podría escribir algo, o simplemente usar un alias. Pero estoy interesado en conocer las opciones.