Como filtrar jsonlines inválidos usando jq

Ao usar dados jsonlines com jq, linhas inválidas podem causar erros de análise, ex.:

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

Para filtrar linhas inválidas, você pode usar o seguinte comando:

filter_invalid_jsonlines.sh
jq -R 'fromjson?'

Isso passará adiante linhas JSON válidas e retornará null para linhas inválidas. Você pode então filtrar os valores null usando select. O comando subsequente precisa lidar com valores null corretamente, mas não verá nenhuma linha inválida.

Exemplo de uso

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

Check out similar posts by category: JSON