我想要类似的东西
jq 'select(.x in [2,4])' <<<'[{"x":1}, {"x": 2}, {"x": 3}, {"x": 4}]'
[{"x": 2}, {"x": 4}]
我该怎么做?
答案 0 :(得分:4)
这是一个有效的解决方案,它还具有简洁明了的优点:
[2,4] as $list
| map(.x as $x | select( any($list[]; . == $x )))
答案 1 :(得分:0)
或者,解决方案可能是这样的:
bash $ JSN='[{"x":1}, {"x": 2}, {"x": 3}, {"x": 4}]'
bash $ <<<$JSN jtc -w'[x]:<V>a:' -u[2,4] -u'<V>s' -pp -r
[ { "x": 2 }, { "x": 4 } ]
bash $
即使要求提供jq的解决方案,此处的JSON操作类型对于JSON
还是很常见的,因此请使用基于walk-path
的unix实用程序jtc
jtc参数的详细说明:
[x]:<V>a:
将找到每个x
值(1
,然后是2
等),并将找到的值存储到变量V
< / li>
V
)中搜索存储在[2,4]
中的值这里的更新操作是虚拟的-除非应用选项-pp
,否则它本身就没有意义(b / c它将使用找到的值更新一个值),它将删除所有其他未更新的元素。 / p>
PS>披露:我是jtc
-用于JSON操作的shell cli工具的创建者