📄
Dasel
v1
v1
  • Introduction
  • Installation
    • Update
  • Use as a go package
  • Github
  • Playground
  • Usage
    • Select
    • Put
    • Put object
    • Put document
    • Delete
    • Validate
    • Flags
      • Escape HTML
      • Format
      • Multiple
      • Null
      • Merge Input Documents
    • Supported file types
  • Selectors
    • Introduction
    • Property
    • Keys and indexes
    • Index
    • Next Available Index
    • All indexes
    • Dynamic
    • Search
    • Search Optional
    • Length
    • Type
  • Notes
    • File formatting and ordering
    • Memory usage
    • Converting between formats
  • Examples
    • JQ to Dasel
    • YQ to Dasel
    • XML
    • Filter JSON API results
Powered by GitBook
On this page
  • Description
  • Usage
  • Functions and accessors
  • Example
  • Select
  • SelectMultiple
Edit on GitHub
  1. Usage
  2. Flags

Format

PreviousEscape HTMLNextMultiple

Last updated 2 years ago

Description

Allows you to format dasel output according to the given template.

Usage

Pass the --format flag to commands.

Available in select commands since v1.18.0.

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.

Function
Description

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.

Description
Example

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

Example

Select

$ echo '[
  {"name": "Tom", "email": "contact@tomwright.me"},
  {"name": "Jim", "email": "jim@gmail.com"}
]' | dasel -p json -m \
  --format '{{ select ".name" }},{{ select ".email" }}' \
  '.[*]'
Tom,contact@tomwright.me
Jim,jim@gmail.com

SelectMultiple

$ echo '[
  {"name": "Tom", "emails": [
    {"email": "contact@tomwright.me", "primary": true},
    {"email": "tom@gmail.com", "primary": false}
  ]},
  {"name": "Jim", "emails": [
    {"email": "old@gmail.com", "primary": false},
    {"email": "jim@gmail.com", "primary": true}
  ]}
]' | dasel -p json -m \
  --format '{{ select ".name" }}:{{ newline }}{{ selectMultiple ".emails.[*]" | format "- {{ select \".email\" }}, {{ select \".primary\" }}{{ if not isLast }}{{ newline }}{{ end }}" }}' \
  '.[*]'
Tom:
- contact@tomwright.me, true
- tom@gmail.com, false
Jim:
- old@gmail.com, false
- jim@gmail.com, true

Dasel also provides access to functions within templates to allow more functionality.

For more information refer to the .

select
sprig
related documentation
https://pkg.go.dev/text/template#hdr-Text_and_spaces