提问人:Kalle Richter 提问时间:7/9/2021 更新时间:7/9/2021 访问量:118
如何使最简单的jq过滤器查询工作?
How to make the simplest jq filter query work?
问:
一个非常简单的
echo '{"nodes":[{"id":"1"}]}' | jq '.nodes[?(@.id=="1")]'
失败,原因如下
jq: error: syntax error, unexpected '?' (Unix shell quoting issues?) at <top-level>, line 1:
.nodes[?(@.id=="1")]
jq: 1 compile error
提示“Unix shell 引用问题?”不适用,因为所有内容都被引用了。但是,我尝试了各种不必要的简单引号和双引号组合,以及它们的转义版本,并结合了 、 和 的转义。'
[
[
@
?
echo '{"nodes":[{"id":"1"}]}' | jq '.nodes'
工作原理相同,因此错误必须存在于过滤器表达式中,这非常简单,在数十个示例中可以看到,并且我在 Jayway JsonPath 库的集成测试中使用了它。echo '{"nodes":[{"id":"1"}]}' | jq '.nodes[0]'
我在 Ubuntu 1.6 上使用 jq 21.04。
答:
2赞
0stone0
7/9/2021
#1
jsonpath 与 jq 不同
筛选器采用 JsonPath 语法。'.nodes[?(@.id=="1")]'
如何使最简单的jq过滤器查询工作?
将其更改为 JQ 选择,如下所示:
jq '.nodes[] | select(.id == "1")'
哪里
.nodes[]
遍历所有节点select(.id == "1")
只保留对象id === 1
评论