The follow examples show a set of commands and the equivalent in dasel.
Select a single value
echo 'name: Tom' | yq '.name'
"Tom"
echo 'name: Tom' | dasel -p yaml '.name'
Tom
Select a nested value
echo 'user:
name: Tom
age: 27' | yq '.user.age'
27
echo 'user:
name: Tom
age: 27' | dasel -p yaml '.user.age'
27
Select an array index
echo '- 1
- 2
- 3' | yq '.[1]'
2
echo '- 1
- 2
- 3' | dasel -p yaml '.[1]'
2
Append to an array of strings
echo '- a
- b
- c' | yq --yaml-output '. += ["d"]'
- a
- b
- c
- d
echo '- a
- b
- c' | dasel put string -p yaml -s '.[]' d
- a
- b
- c
- d
Update a string value
echo '- a
- b
- c' | yq --yaml-output '.[1] = "d"'
- a
- d
- c
echo '- a
- b
- c' | dasel put string -p yaml -s '.[1]' d
- a
- d
- c
Update an int value
echo '- 1
- 2
- 3' | yq --yaml-output '.[1] = 5'
- 1
- 5
- 3
echo '- 1
- 2
- 3' | dasel put int -p yaml -s '.[1]' 5
- 1
- 5
- 3
Overwrite an object
echo 'user:
name: Tom
age: 27' | yq --yaml-output '.user = {"name": "Frank", "age": 25}'
user:
name: Frank
age: 25
echo 'user:
name: Tom
age: 27' | dasel put object -p yaml -t string -t int '.user' name=Frank age=25
user:
age: 25
name: Frank
echo 'user:
name: Tom
age: 27' | dasel put document -p yaml -d json '.user' '{"name":"Frank","age":25}'
user:
age: 25
name: Frank
Append to an array of objects
echo 'users:
- name: Tom' | yq --yaml-output '.users += [{"name": "Frank"}]'
users:
- name: Tom
- name: Frank
echo 'users:
- name: Tom' | dasel put object -p yaml -t string '.users.[]' name=Frank
users:
- name: Tom
- name: Frank
echo 'users:
- name: Tom' | dasel put document -p yaml -d json '.users.[]' '{"name":"Frank"}'
users:
- name: Tom
- name: Frank