Wie man ungültige jsonlines mit jq filtert

Bei der Verwendung von jsonlines-Daten mit jq können ungültige Zeilen Parsing-Fehler verursachen, z.B.

e.g
jq: parse error: Expected separator between values at line 61755, column 1954

Um ungültige Zeilen herauszufiltern, kannst du den folgenden Befehl verwenden:

filter_invalid_jsonlines.sh
jq -R 'fromjson?'

Dies leitet gültige JSON-Zeilen weiter und gibt null für ungültige zurück. Du kannst dann die null-Werte mit select herausfiltern. Der nachfolgende Befehl muss null-Werte korrekt behandeln, wird aber keine ungültigen Zeilen sehen.

Beispielverwendung

filter_and_process_jsonlines.sh
cat data.json | jq -R 'fromjson?' | jq -c '{name: .node?.name?}'

Ähnliche Beiträge nach Kategorie: JSON