У меня есть массив объектов json, и я хотел бы извлечь подмножество массива, чтобы поле .name
соответствовало набору входных строк.
например, я хотел бы выполнить следующее.
jq -n '["a","b","c","d","e"] | map({name:.,foo:"bar"})' \
| jq 'map(select(.name=="a" or .name=="c"))'
Я придумал следующее решение, но мое использование [...]
и add
похоже на то, что я упускаю что-то умное.
jq -n '["a","b","c","d","e"] | map({name:.,foo:"bar"})' \
| jq --arg name 'a c' '
[
( $name | split(" ") )[] as $name
| map( select( .name == $name ) )
| add
]'
Кроме того, это решение заставляет меня перебирать входной массив несколько раз вместо одного прохода. Любые другие идеи, как я мог решить это?