无法使用jq打印名为“ end”的字段

时间:2019-08-20 22:20:31

标签: jq keyword

我正在尝试使用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

有什么想法吗?

1 个答案:

答案 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中一样。