Я читаю данные из файла json с помощью jq. Я хочу добавить результаты в файл yaml, но у меня не получается. Я довольно новичок в программировании оболочки. Моя цель - добавить эти «пользователи» к существующему массиву «пользователи» в файле yaml.
Это мой файл json:
#$DEFAULTS_FILE
{"users":
[
{"name":"pi",
"gecos": "Hypriot Pirate",
"sudo":"ALL=(ALL) NOPASSWD:ALL",
"shell": "/bin/bash",
"groups":"users,docker,video",
"plain_text_passwd":"pi",
"lock_passwd":"false",
"ssh_pwauth":"true",
"chpasswd": {"expire": false}
},
{"name":"admin",
"gecos": "Hypriot Pirate",
"sudo":"ALL=(ALL) NOPASSWD:ALL",
"shell": "/bin/bash",
"primary-group": "users",
"groups":"users,docker,adm,dialout,audio,plugdev,netdev,video",
"ssh-import-id":"None",
"plain_text_passwd":"pi",
"lock_passwd":"true",
"ssh_pwauth":"true",
"chpasswd": "{expire: false}",
"ssh-authorized-keys": ["ssh-rsa abcdefg1234567890 YOUR_KEY@YOURHOST.local"]
}
]
}
Я фильтрую это так:
cat $DEFAULTS_FILE | jq .users
Понятия не имею, как преобразовать этот json в yaml.
Мой ожидаемый результат должен быть:
users:
- name: pi
gecos: "Hypriot Pirate"
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash
groups: users,docker,video
plain_text_passwd: pi
lock_passwd: false
ssh_pwauth: true
chpasswd: { expire: false }
- name: admin
primary-group: users
shell: /bin/bash
sudo: ALL=(ALL) NOPASSWD:ALL
groups: users,docker,adm,dialout,audio,plugdev,netdev,video
ssh-import-id: None
Я попытался использовать второй инструмент под названием yq
, который похож на jq
и может записывать файлы yaml. Но у меня нет положительного прогресса.
EDIT
Я знаю, что могу добавить контент в yaml следующим образом:
yq w -i "my.yml" "users[+]" "some content"
Но я не знаю, как слить мой JSON в это.
Любая помощь или подсказка были бы хорошими, заранее спасибо ...