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"]}