Есть много способов подойти к этому.Вы действительно хотите получить результат в виде массива JSON с квадратными скобками и кавычками вокруг имен столбцов?Если это так, то jq
, вероятно, является хорошим инструментом для его генерации.Примерно так все это будет делать как одна jq
программа:
jq -csR '[split("\n")|
map(select(length>0))[]|
split(",")[0]]|
sort_by(if .=="negative" then "zzzz" else . end)' file.csv
, которая выводит это:
["brand","positive","product","negative"]
Если вы просто хотите, чтобы заголовки разделялись запятыми в строке безВ другой пунктуации, подходящей для заголовка файла CSV, вы можете использовать более традиционные команды для работы с текстом:
cut -d, -f1 file.csv |
sed 's/negative/zzz&/' |
sort -u |
sed 's/zzz//' |
paste -d, -s -
Или вы можете слегка изменить команду jq
, добавив флаг -r
и еще одинтруба в конце:
jq -csrR '[split("\n")|
map(select(length>0))[]|
split(",")[0]]|
sort_by(if .=="negative" then "zzzz" else . end)|
join(",")' file.csv
Любой из которых выводит это:
brand,positive,product,negative