yq
v4.x
v4.x
  • yq
  • How It Works
  • Recipes
  • Upgrading from V3
  • Commands
    • Evaluate
    • Evaluate All
    • Shell Completion
  • Operators
    • Add
    • Alternative (Default value)
    • Anchor and Alias Operators
    • Array to Map
    • Assign (Update)
    • Boolean Operators
    • Collect into Array
    • Column
    • Comment Operators
    • Compare Operators
    • Contains
    • Create, Collect into Object
    • Date Time
    • Delete
    • Divide
    • Document Index
    • Encode / Decode
    • Entries
    • Env Variable Operators
    • Equals
    • Eval
    • File Operators
    • Filter Operator
    • Flatten
    • Group By
    • Has
    • Keys
    • Kind
    • Length
    • Line
    • Load
    • Min
    • Map
    • Max
    • Modulo
    • Multiply (Merge)
    • Omit
    • Parent
    • Path
    • Pick
    • Pipe
    • Pivot
    • Recursive Descent (Glob)
    • Reduce
    • Reverse
    • Select
    • Shuffle
    • Slice Array
    • Sort
    • Sort Keys
    • Split into Documents
    • String Operators
    • Style
    • Subtract
    • Tag
    • To Number
    • Traverse (Read)
    • Union
    • Unique
    • Variable Operators
    • With
  • Usage
    • Output format
    • Working with CSV, TSV
    • Working with JSON
    • Working with Properties
    • Working with XML
    • Working with LUA
    • Working with TOML
    • Working with Shell Output
    • Front Matter
    • Split into multiple files
    • GitHub Action
    • Tips, Tricks, Troubleshooting
  • Github Page
Powered by GitBook
On this page
  • Samples files for tests:
  • yaml
  • xml
  • properties
  • base64
  • Simple example
  • Replace node with referenced file
  • Replace all nodes with referenced file
  • Replace node with referenced file as string
  • Load from XML
  • Load from Properties
  • Merge from properties
  • Load from base64 encoded file

Was this helpful?

  1. Operators

Load

The load operators allows you to load in content from another file.

Note that you can use string operators like + and sub to modify the value in the yaml file to a path that exists in your system.

You can load files of the following supported types:

Format
Load Operator

Yaml

load

XML

load_xml

Properties

load_props

Plain String

load_str

Base64

load_base64

Note that load_base64 only works for base64 encoded utf-8 strings.

Samples files for tests:

yaml

../../examples/thing.yml:

a: apple is included
b: cool

xml

small.xml:

<this>is some xml</this>

properties

small.properties:

this.is = a properties file

base64

base64.txt:

bXkgc2VjcmV0IGNoaWxsaSByZWNpcGUgaXMuLi4u

Simple example

Given a sample.yml file of:

myFile: ../../examples/thing.yml

then

yq 'load(.myFile)' sample.yml

will output

a: apple is included
b: cool.

Replace node with referenced file

Note that you can modify the filename in the load operator if needed.

Given a sample.yml file of:

something:
  file: thing.yml

then

yq '.something |= load("../../examples/" + .file)' sample.yml

will output

something:
  a: apple is included
  b: cool.

Replace all nodes with referenced file

Recursively match all the nodes (..) and then filter the ones that have a 'file' attribute.

Given a sample.yml file of:

something:
  file: thing.yml
over:
  here:
    - file: thing.yml

then

yq '(.. | select(has("file"))) |= load("../../examples/" + .file)' sample.yml

will output

something:
  a: apple is included
  b: cool.
over:
  here:
    - a: apple is included
      b: cool.

Replace node with referenced file as string

This will work for any text based file

Given a sample.yml file of:

something:
  file: thing.yml

then

yq '.something |= load_str("../../examples/" + .file)' sample.yml

will output

something: |-
  a: apple is included
  b: cool.

Load from XML

Given a sample.yml file of:

cool: things

then

yq '.more_stuff = load_xml("../../examples/small.xml")' sample.yml

will output

cool: things
more_stuff:
  this: is some xml

Load from Properties

Given a sample.yml file of:

cool: things

then

yq '.more_stuff = load_props("../../examples/small.properties")' sample.yml

will output

cool: things
more_stuff:
  this:
    is: a properties file

Merge from properties

This can be used as a convenient way to update a yaml document

Given a sample.yml file of:

this:
  is: from yaml
  cool: ay

then

yq '. *= load_props("../../examples/small.properties")' sample.yml

will output

this:
  is: a properties file
  cool: ay

Load from base64 encoded file

Given a sample.yml file of:

cool: things

then

yq '.more_stuff = load_base64("../../examples/base64.txt")' sample.yml

will output

cool: things
more_stuff: my secret chilli recipe is....
PreviousLineNextMin

Last updated 2 years ago

Was this helpful?