Для этих точных данных
jq -r '.content[].information | [.c1,.c2,.c3] | join(",")' < sample.json
будет работать -простая вставка запятых между тремя столбцами воспроизводит эффект объединенного -файла upCSV. Для более сложных реальных данных, особенно с числами, это будет работать лучше :
.jq -r '.content[].information | [.c1,.c2, (.c3|split(",")|.[])] | @csv' < sample.json
Все довольно стандартно до .c3|split(",")|.[]
, что
@csv
затем преобразует массив в формат CSV. Это приводит к следующему результату для вашего примера файла:
"101","11111","a","b","c","d","e:abc."
"102","22222","a."
"103","33333","a","b","c"
"104","44444","a","b"
Если вам не нужны кавычки, надежнее всего использовать @tsv
и просто заменить табы:
jq -r '.content[].information|[.c1,.c2,.c3|split(",")|.[]] | @tsv|gsub("\t"; ",")' < sample.json
Если все ваши значения являются строками, вы также можете снова использовать join(",")
.
Если вы хотите также создать литеральную строку заголовка c1,...c7
, это будет сделано:
jq -r '[.content[].information|[.c1,.c2, (.c3|split(",")|.[])]] | (([range([.[] | length] | max)|"c" + (.+1|tostring)]|join(",")), (.[] | join(",")))' < sample.json
Есть три части :первая создает массивы столбцов, как и раньше, а затем две другие части используют их в качестве входных данных:
([range([.[] | length] | max)|"c" + (.+1|tostring)]|join(","))
генерирует строку заголовка :он находит максимальную длину любой строки, генерируя массив длин строк, создает диапазон 0..максимум и сопоставляет его для создания массива «c1»...»c7», затем соединяет их все вместе запятыми. (.[] | join(","))
аналогичен нашей второй половине из более раннего, и применимы те же самые вещи о @csv
. Вы пробовали выставить яркостьctl?
http://manpages.ubuntu.com/manpages/bionic/man1/brightnessctl.1.html