ファイルの1行を1要素としたJSON配列を作りたい

https://stedolan.github.io/jq/jq.png

id:kizashi1122 です。 最近暑くなってきましたね。

さて、記事のタイトルにあるような「ファイルの1行を1要素としたJSON配列を作りたい」こういう要件が出てきました。

つまり

$ cat input
aaaaaaaaa
bbbbbbbbb
ccccccccc
ddddddddd
eeeeeeeee

こういうファイルから

[
  "aaaaaaaaa",
  "bbbbbbbbb",
  "ccccccccc",
  "ddddddddd",
  "eeeeeeeee"
]

という文字列を生成したいイメージです。

結論

こうやったらいけました。
jq コマンド便利ですね!

array=$(cat input)
jq -nM --arg var "$array" '$var|split("\n")'

別に prettyprint しなくていいよという場合は -c オプションを追加してもらえれば

["aaaaaaaaa","bbbbbbbbb","ccccccccc","ddddddddd","eeeeeeeee"]

こんな感じに出力されます。

これも便利ですね!