Io uso il seguente comando JQ per filtrare il JSON. Il mio requisito è quello di filtrare il messaggio JSON se il nodo previsto è presente. Oppure, non fare nulla. Quindi, io uso if, elif, ....JSON JQ se non altro
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
Sembra che il resto sia obbligatorio qui. Non voglio fare nulla all'interno del blocco else. C'è comunque, posso ignorare altro o semplicemente stampare qualche whitespce dentro altro.
Nel caso precedente, stampa le virgolette doppie "" nel file dei risultati.
Voto precedente per la frase finale. – turiyag
come utilizzare l'istruzione if per valori come array. Ad esempio: . [] | {Result ": if (.foo == null) quindi [] end} [{" foo ": null," bar ":" dati meno interessanti "}, {" foo ":" null "," bar ":" dati meno interessanti "}] – devanathan
Per favore, fai una nuova domanda SO. – peak