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.

Respuestas a la pregunta(18)

Su respuesta a la pregunta