2.6 KiB
Encoder / Decoder
Encode operators will take the piped in object structure and encode it as a string in the desired format. The decode operators do the opposite, they take a formatted string and decode it into the relevant object structure.
Note that you can optionally pass an indent value to the encode functions (see below).
These operators are useful to process yaml documents that have stringified embeded yaml/json/props in them.
Encode value as yaml string
Indent defaults to 2
Given a sample.yml file of:
a:
cool:
bob: dylan
then
yq eval '.b = (.a | to_yaml)' sample.yml
will output
a:
cool:
bob: dylan
b: |
cool:
bob: dylan
Encode value as yaml string, with custom indentation
You can specify the indentation level as the first parameter.
Given a sample.yml file of:
a:
cool:
bob: dylan
then
yq eval '.b = (.a | to_yaml(8))' sample.yml
will output
a:
cool:
bob: dylan
b: |
cool:
bob: dylan
Encode value as yaml string, using toyaml
Does the same thing as to_yaml, matching jq naming convention.
Given a sample.yml file of:
a:
cool: thing
then
yq eval '.b = (.a | to_yaml)' sample.yml
will output
a:
cool: thing
b: |
cool: thing
Encode value as json string
Given a sample.yml file of:
a:
cool: thing
then
yq eval '.b = (.a | to_json)' sample.yml
will output
a:
cool: thing
b: |
{
"cool": "thing"
}
Encode value as json string, on one line
Pass in a 0 indent to print json on a single line.
Given a sample.yml file of:
a:
cool: thing
then
yq eval '.b = (.a | to_json(0))' sample.yml
will output
a:
cool: thing
b: '{"cool":"thing"}'
Encode value as props string
Given a sample.yml file of:
a:
cool: thing
then
yq eval '.b = (.a | to_props)' sample.yml
will output
a:
cool: thing
b: |
cool = thing
Decode a yaml encoded string
Given a sample.yml file of:
a: 'foo: bar'
then
yq eval '.b = (.a | from_yaml)' sample.yml
will output
a: 'foo: bar'
b:
foo: bar
Update a multiline encoded yaml string
Given a sample.yml file of:
a: |
foo: bar
baz: dog
then
yq eval '.a |= (from_yaml | .foo = "cat" | to_yaml)' sample.yml
will output
a: |
foo: cat
baz: dog
Update a single line encoded yaml string
Given a sample.yml file of:
a: 'foo: bar'
then
yq eval '.a |= (from_yaml | .foo = "cat" | to_yaml)' sample.yml
will output
a: 'foo: cat'