json 在数组中找到value时输出文件名

t98cgbkg  于 2023-05-02  发布在  其他
关注(0)|答案(1)|浏览(122)

我想在JSON对象中的特定数组中找到值时使用jq输出文件名。我实际上是尝试使用jq作为一个JSON感知的grep来查找感兴趣的文件。
文件中的JSON数据示例:

{
  "data": {
    "tags": [
      "value1", "value2"
    ]
  }
}

我想得到tags[value1]存在时的文件名。
我试了这些:

$ jq '.data.tags | select(any(index("value1"))) | file_name' -- *.json
$ jq '.data.tags | select(. == "value1") | file_name' -- *.json

但我收到一个错误:“jq:错误:file_name/0未在第1行定义”
如何纠正此错误?

o2g1uqev

o2g1uqev1#

我收到一个错误:“jq:错误:file_name/0未在第1行定义”
过滤器名为input_filename(参见手册)。此外,与jq 1.6+你可以使用SQL风格的运算符IN来检查数组中是否存在一个元素。

jq -r 'select(IN(.data.tags[]; "value1")) | input_filename' -- *.json

相关问题