Я пытаюсь использовать jq
для переформатирования некоторых элементов вывода JSON, сгенерированного ffprobe
как csv
. Я близок (кажется мне), но борюсь с деталями:
Мой ffprobe
вывод показан на детской площадке jq 1.6
Я запуск недавно d / l двоичного файла jq (jq --version
=> jq-1.6
) на MacOS Mojave (10.14.6)
Из терминала на моей Ma c мои результаты:
$ fn_ffprobeall | jq -r '[.format.filename,.format.format_name,.format.tags.album_artist] | @csv'
"01 Jubilee.flac","flac","Bill Charlap Trio"
# where fn_ffprobeall is a function defined as:
fn_ffprobeall () { ffprobe -i "01 Jubilee.flac" -hide_banner -v quiet -print_format json -show_format -show_streams; }
Но этот вывод jq
(показанный выше) - не то, что мне нужно ... Мне нужны значения без окружающих кавычек ""
. Согласно документации для --raw-output / -r
:
При использовании этой опции, если результат фильтра является строкой, он будет записан непосредственно в стандартный вывод, а не отформатирован как JSON строка с кавычками. Это может быть полезно для общения jq-фильтров с системами, не основанными на JSON.
Кроме того, кажется странным, что использование @tsv
вместо @csv
" делает правильную вещь ", поскольку кавычки будут удалены. Я полагаю, можно было бы проделать дополнительную работу, чтобы заменить tab
символов на ,
, но я хотел бы знать, если я что-то упустил, прежде чем вернуться к этому подходу.