Краткое и переносимое «соединение» в командной строке Unix

Как я могу объединить несколько строк в одну, с разделителем, где были символы новой строки, и избегая конечного разделителя и, необязательно, игнорируя пустые строки?

Пример. Рассмотрим текстовый файл foo.txt с тремя строками:

foo
bar
baz

Желаемый результат:

foo,bar,baz

Команда, которую я сейчас использую:

tr '\n' ',' <foo.txt |sed 's/,$//g'

В идеале это будет примерно так:

cat foo.txt |join ,

​​Что:

  1. самый портативный, лаконичный, читаемый способ.
  2. наиболее краткий способ использования нестандартных инструментов unix.

Конечно, я мог бы написать что-нибудь или просто использовать псевдоним. Но мне интересно узнать варианты.

74
задан unwind 15 December 2011 в 15:56
поделиться