コマンドラインで複数行を1行に連結する

やりたかったこととしては、コマンドラインで複数行の標準入力を受け取ってそれを1行にカンマ区切りにして出力すること。

$ cat text
aaaa
bbbb
cccc
$ cat text | tr '\n' ','
aaaa,bbbb,cccc,%

こんな感じで tr を使って改行コードを置換してやればカンマ区切りで1行に連結できる。

JSONをパースして連結する

もともとやりたかったのはこんな感じのこと。

$ echo '{ "employees":[{"firstName":"John", "lastName":"Doe"}, {"firstName":"Anna", "lastName":"Smith"}, {"firstName":"Peter","lastName":"Jones"} ] }' | jq '.employees[] .firstName' | tr '\n' ',' | awk '{ print "result = [" $1 "]" }'
result = ["John","Anna","Peter",]

curlでJSONをHTTP GETしてそれを jq でパースして出たリストをカンマ区切りで出力する、みたいなやつ。

参考