["a", "b", "c"]
给定以下 json 数据和“a”作为搜索词,如何使用 jq 获取包含搜索词“a”的数组?
[
["a","b","c"],
["d","e","f"],
["g","h","i"]
]
答案1
我认为这符合你的要求:
'.[]|select(index("a"))'
这适用于每个子列表,它返回列表中index("a")
的索引或。由于计算结果为 false,因此使用它作为条件仅查找包含 的子列表。a
null
null
select()
a
这是实践中的情况:
$ jq '.[]|select(index("a"))' <<EOF
> [
["a","b","c"],
["d","e","f"],
["g","h","i"]
]
EOF
[
"a",
"b",
"c"
]
答案2
由于顶级数组可能包含一些包含查询字符串的子数组,我假设您想要的是一个顶级数组,其中每个子数组都包含查询字符串:
jq 'map(select(any(index("a"))))' file
这将选择其中至少一个(“任意”)元素是 string 的每个子数组a
。您可以取消index()
内部包装any()
并仅使用map(select(index("a")))
,但从any()
语言的角度来看,使用恕我直言看起来更好,并且它也使其几乎与我对你后续问题的回答。