Mit jq
ist es möglich, nicht nur JSON Objekte weiterzuverarbeiten, sondern auch JSON Arrays.
Nehmen wir an, wir haben folgende Datei data.json
als Beispiel entnommen von json.org.
[
{"id": "Open"},
{"id": "OpenNew", "label": "Open New"},
null,
{"id": "ZoomIn", "label": "Zoom In"},
{"id": "ZoomOut", "label": "Zoom Out"},
{"id": "OriginalView", "label": "Original View"},
null,
{"id": "Quality"},
{"id": "Pause"},
{"id": "Mute"},
null,
{"id": "Find", "label": "Find..."},
{"id": "FindAgain", "label": "Find Again"},
{"id": "Copy"},
{"id": "CopyAgain", "label": "Copy Again"},
{"id": "CopySVG", "label": "Copy SVG"},
{"id": "ViewSVG", "label": "View SVG"},
{"id": "ViewSource", "label": "View Source"},
{"id": "SaveAs", "label": "Save As"},
null,
{"id": "Help"},
{"id": "About", "label": "About Adobe CVG Viewer..."}
]
Dann können wir diese Datei mit folgendem Befehl zum Beispiel in das JSON Lines Format überführen und gleichzeitig die null
-Werte herausfiltern:
> cat data.json | jq '.[] | select(. != null)' -Mc
$
{"id":"Open"}
{"id":"OpenNew","label":"Open New"}
{"id":"ZoomIn","label":"Zoom In"}
{"id":"ZoomOut","label":"Zoom Out"}
{"id":"OriginalView","label":"Original View"}
{"id":"Quality"}
{"id":"Pause"}
{"id":"Mute"}
{"id":"Find","label":"Find..."}
{"id":"FindAgain","label":"Find Again"}
{"id":"Copy"}
{"id":"CopyAgain","label":"Copy Again"}
{"id":"CopySVG","label":"Copy SVG"}
{"id":"ViewSVG","label":"View SVG"}
{"id":"ViewSource","label":"View Source"}
{"id":"SaveAs","label":"Save As"}
{"id":"Help"}
{"id":"About","label":"About Adobe CVG Viewer..."}