Dasel: Difference between revisions

From wikinotes
No edit summary
Line 50: Line 50:
cat out.csv | dasel -p csv -m '.-'
cat out.csv | dasel -p csv -m '.-'
</blockquote><!-- CSV -->
</blockquote><!-- CSV -->
== XML ==
<blockquote>
See https://github.com/TomWright/dasel-docs/blob/master/examples/xml.md
<syntaxhighlight lang="bash">
# 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'
</syntaxhighlight>
</blockquote><!-- XML -->
</blockquote><!-- File Formats -->
</blockquote><!-- File Formats -->

Revision as of 04:48, 29 January 2023

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'