从JSON中提取字符串而不在值周围创建文字引号

时间:2016-08-16 16:14:08

标签: json shell

我用

id=$(cat  an.json | jq '.id')

从JSON获取ID。

当我echo $id时,输出为"1a35"

如何剪切引号"以获取字符串1a35

1 个答案:

答案 0 :(得分:1)

告诉jq将结果作为带-r的原始字符串:

id=$(jq -r '.id' <an.json)

我们可以测试,在更天真的方法获胜的情况下,这种方法可以正常运行。例如,使用反斜杠提取id:

## suggested approach
$ id=$(jq -r '.id' <<<'{"id": "domain\\user"}'
$ echo "$id"
domain\user

## alternative, corrected to use '[^"]+' rather than '[^"]*'
$ id=$(jq '.id' <<<'{"id": "domain\\user"}' | grep -E '[^"]+' -o)
$ echo "$id"
domain\\user