Wie wähle ich mit jq ein übergeordnetes Objekt aus, wenn es ein untergeordnetes Objekt enthält, das zwei Filteranforderungen erfüllt?Verwenden von jq zum Auswählen eines übergeordneten Elements durch Durchsuchen des untergeordneten Schlüssels/Wertpaars
In diesem Beispiel möchte ich alle Subnets-Elemente auswählen, die ein Kind-Tag mit Schlüssel "Name" und Wert "TheName" haben. Mein Beispiel hat zwei Subnetze. Der erste hat "TheName" in der falschen Taste. Das zweite Subnetz hat das Name/Wert-Paar, nach dem ich suche. d. h. "Key": "Name", "Value": "TheName"
Im Folgenden wird ein Subnetz mit dem angegebenen Wert in einem der Tags, aber nicht im Paar ausgewählt. Es gibt beide Subnetze und nicht nur das zweite Subnetz zurück.
Wie verwende ich jq, um nur die Subnetze auszuwählen, die das Name/Wert-Paar haben, nach dem ich suche?
{
"Subnets": [
{
"VpcId": "vpc-12345678",
"SubnetId": "subnet-1234567a",
"Tags": [
{
"Key": "IgnoreThis",
"Value": "TheName"
},
{
"Key": "Name",
"Value": "NotTheName"
}
]
},
{
"VpcId": "vpc-12345678",
"SubnetId": "subnet-1234567b",
"Tags": [
{
"Key": "IgnoreThis",
"Value": "ignore"
},
{
"Key": "Name",
"Value": "TheName"
}
]
}
]
}
Das würde gewünschte Ausgabe sein:
{
"VpcId": "vpc-12345678",
"SubnetId": "subnet-1234567b",
"Tags": [
{
"Key": "IgnoreThis",
"Value": "ignore"
},
{
"Key": "Name",
"Value": "TheName"
}
]
}
Wie die meisten gut geschriebene Unix-Befehle verwendet, 'jq' einen Dateinamen Argument lesen können, so dass [' cat' nutzlos ist] (http: // www .iki.fi/era/unix/award.html) – tripleee