如何删除双引号在jq输出解析json文件在bash?

我使用jq解析JSON文件,如在这里所示。然而,字符串值的结果如预期的那样包含“双引号”,如下所示:

$ cat json.txt | jq '.name'
"Google"

我如何将此管道到另一个命令来删除“”?所以我得到

$ cat json.txt | jq '.name' | some_other_command
Google

我可以使用什么some_other_command ?

216206 次浏览

使用-r(或--raw-output)选项输出原始字符串:

jq -r '.name' <json.txt

因此,对于只包含{"name": "Google"}的文件,则是

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