У меня есть JSON, похожий на следующий:
Файл: my_data.json
{
"hosts": {
"1.2.3.4": { "name": "name4", "env": "test", "options": "" },
"1.2.3.5": { "name": "name5", "env": "prod", "options": "opt1,opt2" },
"1.2.3.6": { "name": "name6", "env": "qa", "options": "" },
"1.2.3.7": { "name": "name7", "env": "staging", "options": "opt3,opt4" },
"1.2.3.8": { "name": "name8", "env": "dev", "options": "opt5" },
"1.2.3.9": { "name": "name9", "env": "prod", "options": "opt6,opt7" }
}
}
Я хочу извлечь из этого файл CSV. Я попробовал несколько вариантов, найденных в Google, но ни один из них не работает. Моя цель — получить что-то вроде следующего:
"1.2.3.4","name4","test",""
"1.2.3.5","name5","prod","opt1,opt2"
"1.2.3.6","name6","dev",""
"1.2.3.7","name7","staging","opt3,opt4"
"1.2.3.8","name8","dev","opt5"
"1.2.3.9","name9","prod","opt6,opt7"
Я получил следующее, но не могу указать адрес ключа и не нашел способа его получить.
jq --raw-output '.hosts[] | [.name, .env, .options] | @csv' my_data.json
Это мой результат, но, как видно, он неполный. Как добавить ключ к каждому объекту?
"name4","test",""
"name5","prod","opt1,opt2"
"name6","qa",""
"name7","staging","opt3,opt4"
"name8","dev","opt5"
"name9","prod","opt6,opt7"
Я сделал это:
jq --raw-output '.hosts | keys_unsorted[] | [.] | @csv' my_data.json
Но при этом получаются только ключи, и я не нашел способа обратиться к объекту с помощью ключа.
"1.2.3.4"
"1.2.3.5"
"1.2.3.6"
"1.2.3.7"
"1.2.3.8"
"1.2.3.9"
Я мог бы попытаться объединить обе таблицы, но это может привести к ошибкам, и я знаю, что должен быть способ сделать это в jq, но я просто не могу найти способ.
p>
Я несколько раз искал в Google и нашел один многообещающий, но он не работает:
jq --raw-output '.hosts | keys_unsorted[] as $k | [$k, \(.[$k] | .name), \(.[$k] | .env), \(.[$k] | .options)] | @csv' my_data.json
Это возвращает ошибки компиляции:
jq: error: syntax error, unexpected INVALID_CHARACTER (Unix shell quoting issues?) at , line 1:
.hosts | keys_unsorted[] as $k | [$k, \(.[$k] | .name), \(.[$k] | .env), \(.[$k] | .options)] | @csv
jq: error: syntax error, unexpected ')', expecting $end (Unix shell quoting issues?) at , line 1:
.hosts | keys_unsorted[] as $k | [$k, \(.[$k] | .name), \(.[$k] | .env), \(.[$k] | .options)] | @csv
jq: 2 compile errors
Подробнее здесь: https://stackoverflow.com/questions/791 ... ner-values
Jq ссылается на индекс/ключ с его внутренними значениями ⇐ Linux
-
Anonymous
1730137957
Anonymous
У меня есть JSON, похожий на следующий:
Файл: my_data.json
{
"hosts": {
"1.2.3.4": { "name": "name4", "env": "test", "options": "" },
"1.2.3.5": { "name": "name5", "env": "prod", "options": "opt1,opt2" },
"1.2.3.6": { "name": "name6", "env": "qa", "options": "" },
"1.2.3.7": { "name": "name7", "env": "staging", "options": "opt3,opt4" },
"1.2.3.8": { "name": "name8", "env": "dev", "options": "opt5" },
"1.2.3.9": { "name": "name9", "env": "prod", "options": "opt6,opt7" }
}
}
Я хочу извлечь из этого файл CSV. Я попробовал несколько вариантов, найденных в Google, но ни один из них не работает. Моя цель — получить что-то вроде следующего:
"1.2.3.4","name4","test",""
"1.2.3.5","name5","prod","opt1,opt2"
"1.2.3.6","name6","dev",""
"1.2.3.7","name7","staging","opt3,opt4"
"1.2.3.8","name8","dev","opt5"
"1.2.3.9","name9","prod","opt6,opt7"
Я получил следующее, но не могу указать адрес ключа и не нашел способа его получить.
jq --raw-output '.hosts[] | [.name, .env, .options] | @csv' my_data.json
Это мой результат, но, как видно, он неполный. Как добавить ключ к каждому объекту?
"name4","test",""
"name5","prod","opt1,opt2"
"name6","qa",""
"name7","staging","opt3,opt4"
"name8","dev","opt5"
"name9","prod","opt6,opt7"
Я сделал это:
jq --raw-output '.hosts | keys_unsorted[] | [.] | @csv' my_data.json
Но при этом получаются только ключи, и я не нашел способа обратиться к объекту с помощью ключа.
"1.2.3.4"
"1.2.3.5"
"1.2.3.6"
"1.2.3.7"
"1.2.3.8"
"1.2.3.9"
Я мог бы попытаться объединить обе таблицы, но это может привести к ошибкам, и я знаю, что должен быть способ сделать это в jq, но я просто не могу найти способ.
p>
Я несколько раз искал в Google и нашел один многообещающий, но он не работает:
jq --raw-output '.hosts | keys_unsorted[] as $k | [$k, \(.[$k] | .name), \(.[$k] | .env), \(.[$k] | .options)] | @csv' my_data.json
Это возвращает ошибки компиляции:
jq: error: syntax error, unexpected INVALID_CHARACTER (Unix shell quoting issues?) at , line 1:
.hosts | keys_unsorted[] as $k | [$k, \(.[$k] | .name), \(.[$k] | .env), \(.[$k] | .options)] | @csv
jq: error: syntax error, unexpected ')', expecting $end (Unix shell quoting issues?) at , line 1:
.hosts | keys_unsorted[] as $k | [$k, \(.[$k] | .name), \(.[$k] | .env), \(.[$k] | .options)] | @csv
jq: 2 compile errors
Подробнее здесь: [url]https://stackoverflow.com/questions/79134544/jq-referencing-an-index-key-with-its-inner-values[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия