У меня есть группа экземпляров AWS, которые я обрабатываю через aws ec describe-экземпляры. Я ищу, чтобы обрезать все записи, чьи IP-адреса не начинаются с '10 .10 '.JQ Выберите элементы, которые не соответствуют строке
aws ec2 describe-instances --no-paginate --filter "Name=instance-state-name,Values=running" --query 'Reservations[].Instances[].{Private:PrivateIpAddress,PublicDNS:PublicDnsName,PublicIP:PublicIpAddress}' | jq '.[] | select(.Private | contains("10.10"))'
Это дает мне полную противоположность тому, что я хочу. Кажется логичным, что я должен каким-то образом свести на нет содержание, но я не смог его извлечь из документации или экспериментов. Мое знание jq усложняется, поэтому, возможно, я использую здесь неправильный оператор или функцию.
Хотя мне хотелось бы ответить на этот конкретный вопрос jq - я приму ответ, который использует JMESPath через переключатель -query, дает тот же результат.
Просто добавьте 'not' в конец предиката select. –
Извините, я не совсем уверен, какой синтаксис должен быть. Не могли бы вы уточнить? Я попытался добавить «не» в нескольких разных местах, но я продолжаю получать ошибки компиляции jq. –
'select (.Private | содержит (« 10.10 ») | not)' Вероятно, вы должны использовать ['startswith/1'] (https://stedolan.github.io/jq/manual/#startswith (str)) как так как вы специально не хотите этого в начале строки. –