DATA:
[ {"NetworkInterfaces": [ {"NetworkInterfaceId": "eni-1" }, {"NetworkInterfaceId": "eni-2" } ],"InstanceId": "i-1" }, {"NetworkInterfaces": [ {"NetworkInterfaceId": "eni-3" }, {"NetworkInterfaceId": "eni-4" } ],"InstanceId": "i-2" }, {"NetworkInterfaces": [ {"NetworkInterfaceId": "eni-5" }, {"NetworkInterfaceId": "eni-6" } ],"InstanceId": "i-3" }]JQ QUERIES :
WORKS :
.[] | select(.["NetworkInterfaces"] | .[] | select(.["NetworkInterfaceId"] | IN("eni-1", "eni-3"))) | .["InstanceId"] // empty => return "i-1" "i-2" which is correct
ISSUE 1 : (NOT SOLVE YET)
.[] | select(.["NetworkInterfaces"] | .[] | select(.["NetworkInterfaceId"] | IN("eni-1", "eni-3") | not)) | .["InstanceId"] // empty => return "i-1" "i-2" "i-3" "i-3" which is NOT what I want. I would like it returns only "i-3". How do I fix this query?
ISSUE 2 : (SOLVED)
.[] | select(.["NetworkInterfaces"] | .[] | select(.["NetworkInterfaceId"] | IN("eni-1", "eni-2"))) | .["InstanceId"] // empty => return "i-1" "i-1". I would like it returns only one "i-1". How do I fix this query (hope not to use shell command sort -u -f?
look like I figured out this issue by using fist() .[] | first(select(.["NetworkInterfaces"] | .[] | select(.["NetworkInterfaceId"] | IN("eni-1", "eni-2")))) | .["InstanceId"] // empty
Thanks!!!!