TL; DR
行ごとのやつ
$ echo -e "aaa bbb\nccc ddd" | jq -R .
"aaa bbb"
"ccc ddd"
列ごとのやつ
$ echo -e 'aaa bbb\nccc ddd' | sed 's/[^ ]\+/"&"/g'
"aaa" "bbb"
"ccc" "ddd"
動機
bashで出力にダブルクォートを含める必要があるとき、エスケープを嫌ってシングルクォートを使いたくなる。
$ echo '"Hello, world"'
"Hello, world"
$ echo "\"Hello, world\""
"Hello, world"
しかし変数を埋め込もうとするとシングルクォートは使えない。
そこで上のようなちょっとした解決策が役に立つ。jqはjsonをシェルで扱うためのコマンドだ。sedのようにプリインストールされていないが、インストールしておいて損はない。
$ greeting=Bonjour target=monde
$ echo "$greeting, $target" | jq -R .
"Bonjour, monde"
例えば、次のようにして標準出力をjsonのリストに押し込める。便利だ。
$ echo -e "Hello, world\nBonjour, monde" | jq -R . | jq -sc .
["Hello, world","Bonjour, monde"]
$ echo -e "Hello, world\nBonjour, monde" | jq -R . | jq -sc '{greetings: .}'
{"greetings":["Hello, world","Bonjour, monde"]}