Ich habe diesen Json
{
"users": [
{
"first": "Stevie",
"last": "Wonder"
},
{
"first": "Michael",
"last": "Jackson"
}
]
}
Mit jq möchte ich Vor- und Nachnamen seriell anzeigen. Wie so -
Stevie Wonder
Michael Jackson
So weit bin ich gekommen -
jq '.users[].first, .users[].last'
Aber es wird angezeigt
"Stevie"
"Michael"
"Wonder"
"Jackson"
Beachten Sie Folgendes -
- Die doppelten Anführungszeichen, die ich nicht will.
- Den Wagenrücklauf will ich nicht.
- Es ist durcheinander. In meiner Abfrage werden zuerst alle Vornamen und dann alle Nachnamen angezeigt. Ich möchte jedoch das vorletzte, das vorletzte Paar.
Sie können Addition verwenden, um Zeichenfolgen zu verketten.
Das obige funktioniert, wenn beide
first
undlast
Zeichenfolge sind. Wenn Sie verschiedene Datentypen (Nummer und Zeichenfolge) extrahieren, müssen wir in äquivalente Typen konvertieren. Bezugnehmend auf die Lösung dieser Frage . Beispielsweise.quelle
" "
Zahl hinzugefügt werden kann . Erics Antwort liefert ein besseres Ergebnis für diesen Fall.(.numA|tostring) + " " + (.numB|tostring)
sollte funktionieren. Oder verwenden Sie stattdessen die Zeichenfolgeninterpolation :"\(.numA) \(.numB)"
.jq '.users[] | .first + " " + .last'
, funktionierte es sehr gut, verursachte aber eine neue Linie zwischen dem Wert von.first
und.last
. Ich änderte das" "
an"@"
und dann tat einesed 's/@/ /g'
am Ausgang „John Smith“ als Ausgabe zu erhalten. So etwas wie das:jq '.users[] | .first + "@" + .last' | sed 's/@/ /g'
quelle
Während beide der obigen Antworten gut funktionieren, wenn Schlüssel, Wert Zeichenfolgen sind, hatte ich die Situation, eine Zeichenfolge und eine Ganzzahl anzuhängen (jq-Fehler unter Verwendung der obigen Ausdrücke)
Voraussetzung: Um eine URL unter json zu erstellen
Lösung:
quelle
\(...)
ist String-Interpolation. Hier verwandelt es numerisch.ServicePort
in Zeichenfolge. Anstelle der+
Vorzeichen könnte eine Interpolation verwendet werden , um diese Lösung kürzer zu machen.Dies erzeugt eine Reihe von Namen
quelle
Ich kam dem, was ich wollte, ziemlich nahe, indem ich so etwas tat
Die Ausgabe ist nah genug an yaml, damit ich sie normalerweise ohne große Probleme in andere Tools importieren kann. (Ich suche immer noch nach einer Möglichkeit, eine Teilmenge der Eingabe json einfach zu exportieren.)
quelle
Mein Ansatz wird sein (Ihr json Beispiel ist nicht gut geformt .. denke, das ist nur ein Beispiel)
gibt so etwas zurück
und grep die Ausgabe mit regulären Ausdrücken.
quelle