Ich verwende den folgenden JQ Befehl, um den JSON herauszufiltern. Meine Anforderung besteht darin, die JSON-Nachricht herauszufiltern, wenn der erwartete Knoten vorhanden ist. Oder sonst, tu nichts. Daher verwende ich wenn, elif, ....JSON JQ wenn ohne sonst
sed -n "s/.*Service - //p" $1/response.log* |
jq "if (.requests | length) != 0 then .requests |= map(select(.id == \"123\"))
elif (.result | length) != 0 then .result |= map(select(.id== \"123\"))
else " " end" > ~/result.log
Sieht aus wie sonst ist hier obligatorisch. Ich möchte nichts im else-Block tun. Gibt es sowieso, kann ich sonst ignorieren oder nur etwas whitespce in anderen ausdrucken.
In dem obigen Fall druckt es doppelte Anführungszeichen "" in der Ergebnisdatei.
Upvote für den letzten Satz. – turiyag
wie Sie die if-Anweisung für array-ähnliche Werte verwenden. Zum Beispiel: . [] | {Result ": if (.foo == null) dann [] end} [{" foo ": null," bar ":" weniger interessante Daten "}, {" foo ":" null "," bar ":" weniger interessante Daten "}] – devanathan
Bitte stellen Sie eine neue SO Frage. – peak