jq可以检查逗号分隔的值数组的每个元素以检查值是否存在于JSON中吗?

丹尼尔·麦克

我有一个JSON文件,我正在使用jq从中提取数据。一个简单的用例是提取包含ID作为参数提供的任何JSON对象。

我使用以下简单脚本执行此操作:

[.[] | select(.id == $ID)]

脚本存储在单独的文件(by_id.jq)中,我使用-f参数将其传递进来

完整的命令如下所示:

cat ./my_json_file.json | jq -sf --arg ID "8df993c1-57d5-46b3-a8a3-d95066934e5b" ./by_id.jq

有没有一种方法可以仅使用jq来将逗号分隔的值列表作为参数传递给jq脚本,并遍历id并将它们与.idJSON文件中的value进行比较,结果是对象具有该身份证?

例如,如果我想通过它们的ID提取三个对象,则需要以这种方式构造命令:

cat ./my_json_file.json | jq -sf --arg ID "8df993c1-57d5-46b3-a8a3-d95066934e5b,1d5441ca-5758-474d-a9fc-40d0f68aa538,23cc618a-8ad4-4141-bc1c-0251y0663963" ./by_id.jq

杰夫·梅卡多(Jeff Mercado)

当然。尽管您需要将ID列表解析(拆分)为jq可以使用的对象,例如ID数组。然后,给定键数组,您的问题就变成了选择具有任何这些ID的对象。您可以使用这里找到的方法

$ jq --arg ID '8df993c1-57d5-46b3-a8a3-d95066934e5b,1d5441ca-5758-474d-a9fc-40d0f68aa538,23cc618a-8ad4-4141-bc1c-0251y0663963' '
select(.id | IN($ID|split(",")[]))
' ./my_json_file.json

我不确定您的输入是什么样子,但是通过使用slurping然后过滤已过滤的输入来判断,它是一个对象流。在这里没有吃草的感觉。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检查数组值是否存在于另一个包含逗号分隔值的数组值中

如何检查数组1中每个值的顺序,是否存在于数组2中并删除?

检查值是否存在于多维数组中

检查元素是否存在于数组中

如何检查元素是否存在于数组对象中

检查元素存在于数组中

检查元素存在于数组中

如何在jquery / javascript中检查数组中的值是否存在于数组中

检查值是否已存在于字典列表中?

检查值是否已存在于Firebase中?

检查列值是否存在于字典[pandas]中

检查键及其值是否存在于对象中

如何检查值是否存在于struct中?

jQuery检查值存在于对象数组中

检查值是否存在于集合或数组中,如果不存在,则将其添加

检查数组 1 的值是否存在于数组 2 的键中 - PHP

检查来自后端数组的输入字段值是否存在于数组中

如何检查一个值是否存在于javascript中的数组中?

Typescript:按值检查对象是否存在于数组中

检查键是否存在于数组中并替换其值

检查值是否存在于二维选项卡(数组,vb)中

Laravel:如何检查复选框的值是否存在于数组中

如何匹配字母并检查值是否存在于数组中或不使用 PHP

Javascript检查值是否存在于二维数组更新中否则创建

检查值数组是否存在于数据库 MySQL 中

空手道表达式以检查值是否存在于数组中

检查一个值是否存在于两个或多个数组中

检查数组值是否存在于订阅angular10中

如何检查数组中的每个元素以查看它是否存在于另一个数组中,并将第一个数组中的元素替换为其他元素?