我正在尝试使用jq
从json文件中打印出一个名为“ end”的字段,但是遇到以下错误:
$ echo '{"start": 10, "end": 20}` > /tmp/out.json
$ jq .start /tmp/out.json
10
$ jq .end /tmp/out.json
error: syntax error, unexpected end, expecting $end
.end
^^^
1 compile error
此问题(https://github.com/stedolan/jq/issues/256)建议使用.["end"]
作为选择器,但这似乎也不起作用。
$ jq .["end"] /tmp/out.json
error: syntax error, unexpected end
.[end]
^^^
1 compile error
有什么想法吗?
答案 0 :(得分:3)
此问题已在jq的最新版本中修复。我可以这样做:
$ jq --version
jq-1.6-1-g2f2d05b
$ jq .end <<< '{"start": 10, "end": 20}'
20
您的第二次尝试失败,因为外壳程序删除了双引号。您必须通过引用整个内容来保护它们:
jq '.["end"]'
描述您最初的问题的相关问题是Reserved words should not generate errors when used as object keys;该修复程序在this commit中,并且看起来像version 1.5rc2以来的jq中一样。