2017-12-01 27 views
0

私はKSHシェルスクリプトを書いています。実際の改行文字やタブの代わりに\n\r\tのような制御文字を含むJSONファイルから読み込みます(制御文字は実際の文字列として読み込まれます)。私はjqを使用して、このJSONファイルから必要なものを解析し、それをテキストファイルに追加します。このテキストファイルは、改行、タブなどの代わりに\n\tのような文字列を持つことにもなります。これらの制御文字の実際の意味をテキストファイルに入れます。例えばjqの制御文字JSON

は、文字列"I\nam\na\ngood\nboy"のために、私は私のファイルを持っていると思います:

I 
am 
a 
good 
boy 

シェルスクリプトでこれを実現する方法上の任意のアイデア?

注:私はKSHで書いていますが、bashなどの回答は受け入れられます。

+0

変更する方法 '関連する5行の文字列に'自明である "私は\ ngood \ nboy NA南の\は\します"。 *結果が有効なマークダウンであることを確認する*は潜在的に困難です。マークダウンが本当に質問の一部でない場合は、それを削除したいかもしれませんか? –

+0

Hmm。正確な複製がない場合、これはhttps://stackoverflow.com/questions/44656515/how-to-remove-double-quotes-in-jq-output-for-parsing-json-files-in-bashに非常に近いです。/44656583#44656583 –

答えて

3

-r引数を使用して、jqに出力に生の文字列を使用するように指示します。

jq -r . <<EOF 
"I\nam\na\ngood\nboy" 
EOF 

は...正確な出力を発する:

I 
am 
a 
good 
boy 
+0

ありがとう、これは素晴らしいです。あなたの提案に基づいて質問を編集しています。 – lebowski

関連する問題