jq解析的JSON中的控制字符

leb*_*ski 1 bash shell json ksh jq

我正在编写KSH Shell脚本。它从JSON文件中读取,该文件包含控制字符(如)\n\r\t代替实际的换行符或制表符(因此,控制字符被作为实际的字符串读取)。我正在使用jq此JSON文件解析所需的内容,并将其附加到文本文件中。该文本文件还最终具有字符串,如\n\t而不是换行符,制表符等。我希望文本文件具有这些控制字符的实际含义。

例如,对于字符串"I\nam\na\ngood\nboy",我希望我的文件具有:

I
am
a
good
boy
Run Code Online (Sandbox Code Playgroud)

关于如何在Shell脚本中完成此操作的任何想法?

注意:我用KSH写作,但是以bash等答案是可以接受的。

Cha*_*ffy 5

使用自-r变量告诉jq将原始字符串用于其输出。

jq -r . <<EOF
"I\nam\na\ngood\nboy"
EOF
Run Code Online (Sandbox Code Playgroud)

...发出精确的输出:

I
am
a
good
boy
Run Code Online (Sandbox Code Playgroud)