首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jq select和contains错误:不能检查null (null)和字符串("randomtext1")的包含性

jq select和contains错误:不能检查null (null)和字符串("randomtext1")的包含性
EN

Stack Overflow用户
提问于 2019-04-13 09:13:19
回答 1查看 1.4K关注 0票数 2

命令:

代码语言:javascript
运行
复制
cat test.json | jq -r '.[] | select(.["$link"] | contains("randomtext1")).id'

我希望上面的命令会同时显示两个I (a和b),因为它们都包含下面的"randomtext1"文本

代码语言:javascript
运行
复制
"input"|"obj1"|"$link" and "input"|"obj3"|"$link". 
代码语言:javascript
运行
复制
jq: error (at <stdin>:11): null (null) and string ("randomtext1") cannot have their containment checked
parse error: Expected value before ',' at line 11, column 2

我看到"$link"对象在"input""obj#"对象中。我该如何指定它们,还是需要这样做?错误消息似乎指向其他东西。此外,只有"input""$link"在记录中是恒定的,"obj#"的名称可以改变,这使得它们是随机的。

test.json文件:

代码语言:javascript
运行
复制
[{
      "input": {
            "obj1": {
                "$link": "randomtext1"
            }, 
            "obj2": {
                "$link": "randomtext2"
            }
      },
      "id": "a"
},
{
      "input": {
            "obj3": {
                "$link": "randomtext1"
            }, 
            "obj4": {
                "$link": "randomtext3"
            }
      },
      "id": "b"
}]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-13 09:40:26

过滤器:

代码语言:javascript
运行
复制
.[]
| select(.input[] | .["$link"] | contains("randomtext1")) 
| .id

产生:

代码语言:javascript
运行
复制
"a"
"b"

但是请注意,contains具有非常复杂的语义,因此使用index可能会更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55661161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档