paste というコマンドがあります。
2 つのファイルを行ごとに連結するするコマンドなのですが 何か“ちょっと違う”使い道がないか考えていました。 今回は、このコマンドでカンマ区切りのデータを作ってみたいと思います。
まずは paste コマンドのおさらい。
次の 2 つのファイル user.txt と color.txt を処理します。
sato suzuki watanabe yamada
red black white
この 2 つのファイルをを列ごとに連結します。
$ paste user.txt color.txt
sato red
suzuki black
watanabe white
yamada
デフォルトでは、列は TAB で連結されます。 color.txt が 1 行少ないので 最後の行は "yamada" のみ出力されます。
区切りを変えることもできます。
$ paste -d "=" user.txt color.txt sato=red suzuki=black watanabe=white yamada=
"-s" オプションを付けると、ファイルごとに 1 行になります。
$ paste -s user.txt color.txt
sato suzuki watanabe yamada
red black white
標準入力を受けることもできます。
$ cat color.txt | paste -s
red black white
これを利用することで、 標準入力を受けて カンマ区切りで出力することができます。
$ ls | paste -s -d ","
a.txt,b.txt,c.txt,d.txt