Parses YAML input passed from file or piped to STDIN and filters it by key or index
For additional multi YAML document manipulation take a look at yaml-seam.
Given the following test data in the file test_data/test.yaml:
---
hello: world
array:
- element 1
- element 2
- element 3
array 2:
- key1: value1
- key2: value2
- key3: value3
number: 123
float: 123.123
bool: truePrint all contents
$ yaml-parse test_data/test.yaml array: - element 1 - element 2 - element 3 array 2: - key1: value1 - key2: value2 - key3: value3 bool: true float: 123.123 hello: world number: 123
Print
array$ yaml-parse test_data/test.yaml -k array - element 1 - element 2 - element 3
Print
array first element$ yaml-parse test_data/test.yaml -k array -k 0 element 1
Print
array 2$ yaml-parse test_data/test.yaml -k 'array 2' - key1: value1 - key2: value2 - key3: value3
Print
array 2 first element then map value$ yaml-parse test_data/test.yaml -k 'array 2' -k 0 -k key1 value1
Do the same with slash
$ yaml-parse test_data/test.yaml -k 'array 2/0/key1' value1
Add a json element to 'array 2'
$ yaml-parse test_data/test.yaml --add '{ hola: mundo }' -k 'array 2'
array:
- element 1
- element 2
- element 3
array 2:
- key1: value1
- key2: value2
- key3: value3
- hola: mundo
bool: true
float: 123.123
hello: world
number: 123
Read the second document of a multi document YAML file
$ yaml-parse test_data/multiple.yaml -d 2 arreglo: - elemento 1 - elemento 2 - elemento 3 arreglo 2: - llave1: valor1 - llave2: valor2 - llave3: valor3 bool: true float: 123.123 hola: mundo numero: 123
-
Install using go:
go install github.com/DavidGamba/dgtools/yaml-parse@latest
Ensure your Go bin is in your PATH.
Then setup the completion.
For bash:
complete -o default -C yaml-parse yaml-parse
For zsh:
export ZSHELL="true" autoload -U +X compinit && compinit autoload -U +X bashcompinit && bashcompinit complete -o default -C yaml-parse yaml-parse
-
Install using homebrew:
brew tap DavidGamba/dgtools https://github.com/DavidGamba/dgtools brew install DavidGamba/dgtools/yaml-parse
NoteCompletion is auto setup for bash.
For
zshcompletions, an additional step is required, add the following to your.zshrc:export ZSHELL="true" source "$(brew --prefix)/share/zsh/site-functions/dgtools.yaml-parse.zsh"
Upgrade with:
brew update brew upgrade yaml-parse