Як відфільтрувати невірні 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?}'

Дивіться схожі статті за категоріями: JSON