I read data from a json file with jq. I wanna append the results into a yaml file, but I dont get it working. I am quite new to shell programming. My goal is to append that "users" to an existing "users"-Array in a yaml file.
This is my json file:
#$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"] } ] }
I filter it with that:
cat $DEFAULTS_FILE | jq .users
I have no clue how to convert that json into a yaml.
My expected result should be:
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
I tried to use a second tool called yq
which is similar to jq
and can write yaml files. But I have no positive progress.
EDIT
I know that I can add content to the yaml with that:
yq w -i "my.yml""users[+]""some content"
But I dont know how to merge my json into that.
Any help or hint would be nice, thank you in advance...