2017-03-12 6 views
2

nicht enthält Ich habe eine aws-Abfrage, die ich in jq filtern möchte. Ich möchte alle imageTags filtern, dass mit „latest“ nicht Ende tunjq - Wie man einen JSON filtert, der

Bisher habe ich dies tat, aber es filtert die Dinge mit „latest“, während ich die Dinge filtern wollen nicht „latest“ (oder auch nicht enthalten, endend mit "spätestes")

aws ecr beschreiben-images --repository-name --output json | jq '. []' | jq '. []' | jq "wählen ((.imagePushedAt < 14893094695) und (.imageTags [] | enthält (\" latest \ ")))"

Dank

+0

Bitte geben Sie ein minimales, vollständig überprüfbares Beispiel an (siehe http://stackoverflow.com/help/mcve). Ein Grund ist, dass Ihre Problembeschreibung unklar ist, ob es die Verwendung von "Any" (oder gleichwertig) erfordert. – peak

+0

Mögliches Duplikat von [Wie filtert man ein Array von Objekten basierend auf Werten in einem inneren Array mit jq?] (Http://stackoverflow.com/questions/26701538/how-to-filter-an-array-of-objects-) based-on-values-im-inneren-array-with-jq) –

Antwort

6

können Sie verwenden not die Logik zu umkehren

(.imageTags[] | contains(\"latest\") | not) 

Auch würde ich mir vorstellen, Sie können Ihre Pipeline zu einem einzigen jq Anruf vereinfachen.

+0

Hey, danke für die Antwort, Ich habe versucht, es auszuführen, aber ich bekomme: aws ecr beschreiben-images --repository-name embed-service --Ausgabe json | jq '. []' | jq '. []' | jq "select (.imageTags [] | enthält (\" next \ ") | not)" jq: Fehler: Kann nicht über null iterieren Aber ich habe imageTags ohne "neueste" –

+0

Wie seltsam. Gibt es eine Chance, ein Beispiel für den JSON zu geben, mit dem du es zu tun hast? –