Cómo filtrar jsonlines inválidos usando jq

Al usar datos jsonlines con jq, las líneas inválidas pueden causar errores de análisis, p. ej.

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

Para filtrar las líneas inválidas, puedes usar el siguiente comando:

filter_invalid_jsonlines.sh
jq -R 'fromjson?'

Esto dejará pasar las líneas JSON válidas y devolverá null para las inválidas. Luego puedes filtrar los valores null usando select. El comando posterior necesita manejar los valores null correctamente, pero no verá ninguna línea inválida.

Ejemplo de uso

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

Echa un vistazo a artículos similares por categoría: JSON