我使用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

因此,对于只包含{"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