json - 在“del”内的“select”中使用带有“contains”的 jq 不起作用
问题描述
我尝试从 json 中的字典中删除一些条目。它通过使用 == 工作,但包含它不起作用。
Jq调用工作:
jq 'del(.entries[] | select(.var == "foo"))' input.json
Jq 调用不工作:
jq 'del(.entries[] | select(.var | contains("foo")))' input.json
输入.json:
{
"entries": [
{
"name": "test1",
"var": "foo"
},
{
"name": "test2",
"var": "bar"
}
]
}
输出:
{
"entries": [
{
"name": "test2",
"var": "bar"
}
]
}
jq '.entries[] | select(.var == "foo")' input.json
and的结果jq '.entries[] | select(.var | contains("foo"))' input.json
是一样的,所以我认为这两个del
调用也应该起作用。
这是jq中的错误还是我做错了什么?
解决方案
这一定是一个错误,因为它似乎在jq
1.6 上完美运行(在这里尝试)。
如果您无法更新到jq
1.6,您应该可以使用以下命令,我已在jq
1.5 上成功测试过:
jq '.entries |= map(select(.var | contains("foo") | not))' file.json
推荐阅读
- react-native - 卸载并移动屏幕后在 Audio.Sound() 上调用的方法
- r - 如何将 diff() 与 group_by() 结合使用
- jekyll - 使用分页时如何按修改日期对帖子进行排序?
- sql - SQL:根据最近的日期选择一个字段中的值是唯一的记录
- c# - StackLayout 中的 ChartView 截断图表
- angular - 您好,我在发出 http 删除请求时收到以下错误
- scala - Scala“无法在对象 CassandraConnector 中访问 DCAwareRoundRobinPolicy 类中的构造函数 DCAwareRoundRobinPolicy”
- html - 有条件地禁用Angular中的标签
- php - Laravel:如何在用户注册表单中添加下拉列表
- postgresql - 在 adminer 中查看 postgresql json 表作为(可排序的)表