Использование jq для преобразования JSON {"k1": "v1", "k2": "v2"} в CSV: v1, v2 - PullRequest
0 голосов
/ 05 мая 2018

У меня есть файл JSON in.txt со строками типа {"k1":"v1","k2":"v2"}, и я хочу создать из него файл CSV out.txt со строками v1,v2. Файл JSON может содержать более 10 пар ключ / значение, поэтому я предпочитаю решение, которое не требует указания каждой клавиши в команде ввода.

Пока я нашел эту команду:

jq -r '[.[]] | @csv' in.txt > out.txt

, который создает выходной файл со строками: "v1","v2". Как мне избавиться от двойных кавычек?

обновление: Я могу удалить двойные кавычки, используя sed, как показано ниже, но мне все еще интересно найти решение, используя jq:

jq -r '[.[]] | @csv' in.txt | sed -e 's/\"//g' > out.txt

1 Ответ

0 голосов
/ 05 мая 2018

Если вы уверены, что входные данные не содержат ,, вы можете использовать join(",").

Допустим, у вас есть этот входной файл:

{"k1":"v1","k2":"v2"}
{"k1":"v3","k2":"v4"}
{"k1":"v5","k2":"v6"}

Вы можете использовать join так:

jq -r 'values|join(",")' input.file

Выход:

v1,v2
v3,v4
v5,v6
...