Dasel
From wikinotes
Inspired by jq and yq, but operates on json, yaml, toml, xml, csv.
Totally standalone, no runtime dependencies.
Documentation
official docs https://daseldocs.tomwright.me/ github https://github.com/TomWright/dasel
Examples
# modify 'foo.yml', adding obj['category']['three'] = "3" dasel put string \ -f foo.yml \ '.category.three' '3' # print 'foo.yml', # with obj['category']['three'] = "3" added, # while also preserving comments # # see: https://stackoverflow.com/questions/14282617/hunk-1-failed-at-1-whats-that-mean diff \ <(dasel -f foo.yml) \ <(dasel put string -f foo.yml -o - '.category.three' '3') \ | patch -o - foo.yml
Datatypes
string: string int: integer bool: true/false object: a set of key/value pairs (can be assigned to objects of various types) document: a json/yaml/toml/... object (can be put into documents of other types)
File Formats
CSV
cat out.csv | dasel -p csv -m '.-'
XML
See https://github.com/TomWright/dasel-docs/blob/master/examples/xml.md
# replace the contents of the LAST <configuration><device>...</devic></configuration> with <a>1</a> cat config.xml | dasel put -r xml -v '<a>1</a>' '.configuration.device'