Format
Description
Allows you to format dasel output according to the given template.
Usage
Pass the --format
flag to select commands.
Functions and accessors
The root context .
is equal to the node found at the given selector.
It is recommended that you use the select
function with a selector to access values, but you can access properties in the path with .field.subField
if preferred.
select "selector"
Returns the node at the given selector.
selectMultiple "selector"
Returns a list of nodes found for the given selector.
query
Alias of select
.
queryMultiple
Alias of selectMultiple
.
isFirst
Returns true
if the node being formatted is the first in a list of selected nodes.
isLast
Returns true
if the node being formatted is the last in a list of selected nodes.
format "template"
Allows recursive calls to the formatting capability. Useful when using a selectMultiple
.
newline
Returns a newline character.
The templates are parsed using golang's text/template
package so dasel also supports an array of conditional and loop statements by default.
If condition
{{ if x }} x is true {{ else }} x is false {{ end }}
If not condition
{{ if not x }} x is
false {{ else }} x is true {{ end }}
Range
Numbers:
{{ range .numbers -}}
- {{ . }}
{{ end }}
Text and space manipulation
For more information refer to the related documentation.
Example
Select
$ echo '[
{"name": "Tom", "email": "[email protected]"},
{"name": "Jim", "email": "[email protected]"}
]' | dasel -p json -m \
--format '{{ select ".name" }},{{ select ".email" }}' \
'.[*]'
Tom,[email protected]
Jim,[email protected]
SelectMultiple
$ echo '[
{"name": "Tom", "emails": [
{"email": "[email protected]", "primary": true},
{"email": "[email protected]", "primary": false}
]},
{"name": "Jim", "emails": [
{"email": "[email protected]", "primary": false},
{"email": "[email protected]", "primary": true}
]}
]' | dasel -p json -m \
--format '{{ select ".name" }}:{{ newline }}{{ selectMultiple ".emails.[*]" | format "- {{ select \".email\" }}, {{ select \".primary\" }}{{ if not isLast }}{{ newline }}{{ end }}" }}' \
'.[*]'
Tom:
- [email protected], true
- [email protected], false
Jim:
- [email protected], false
- [email protected], true
Last updated