Как отфильтровать некорректные jsonlines с помощью jq

При использовании данных jsonlines с jq некорректные строки могут вызывать ошибки парсинга, например:

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

Чтобы отфильтровать некорректные строки, вы можете использовать следующую команду:

filter_invalid_jsonlines.sh
jq -R 'fromjson?'

Это пропустит корректные JSON-строки и вернёт null для некорректных. Затем вы можете отфильтровать значения null с помощью select. Последующая команда должна корректно обрабатывать значения null, но она не увидит некорректных строк.

Пример использования

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

Check out similar posts by category: JSON