Dada a entrada simplificada:
[
[ "gpu" ],
[ "disk" ]
]
Gostaria de selecionar as matrizes cujo primeiro elemento é "gpu"
.
Posso fazer isso com uma condição simples:
map(select(.[0] == "gpu"))
[
[ "gpu" ]
]
Mas não entendo o que há de errado quando tento usar o IN
builtin:
map(select(.[0] | IN(["gpu"])))
[]
Estou usando jq
1.6
IN/1
é definido comodef IN(s): any(s == .; .);
, entãomap(select(.[0] | IN(["gpu"])))
se traduz emmap(select(.[0] | any(["gpu"] == .; .)))
mas.
dentro demap
é[ "gpu" ]
, portanto.[0]
é"gpu"
, que não é igual a[ "gpu" ]
, e o filtro consequentemente falha.Em vez disso, compare
.[0]
com"gpu"
:Demonstração
Usar
IN
, no entanto, só faz sentido para compactar múltiplas comparações. Para essa única comparação, é claro, um simplesmap(select(.[0] == "gpu"))
seria suficiente.