我使用jq解析一个JSON文件,如下所示。然而,字符串值的结果如预期的那样包含“双引号”,如下所示:
$ cat json.txt | jq '.name'
"Google"
我如何将此管道到另一个命令来删除“”?所以我得到
$ cat json.txt | jq '.name' | some_other_command
Google
我可以使用什么some_other_command ?
我使用jq解析一个JSON文件,如下所示。然而,字符串值的结果如预期的那样包含“双引号”,如下所示:
$ cat json.txt | jq '.name'
"Google"
我如何将此管道到另一个命令来删除“”?所以我得到
$ cat json.txt | jq '.name' | some_other_command
Google
我可以使用什么some_other_command ?
当前回答
使用-r(或——raw-output)选项将原始字符串作为输出:
jq -r '.name' <json.txt
其他回答
使用-r(或——raw-output)选项将原始字符串作为输出:
jq -r '.name' <json.txt
因此,对于只包含{"name": "谷歌"}的文件,则是
sample='{"name":"Google"}'
echo $sample| jq '.name'
"Google"
使用——raw-input会有所帮助
echo $sample| jq --raw-output '.name'
Google
但我无意中发现了这个问题,因为我在这样的json数组上使用-raw-output
sample='[{"name":"Yahoo"},{"name":"Google"}]'
echo $sample | jq --raw-output 'map(.name)'
[
"Yahoo",
"Google"
]
我不明白为什么这些引语还在。我看到了这篇文章,现在我知道添加| .[]是有用的!
echo $sample | jq --raw-output 'map(.name)| .[]'
Yahoo
Google