For the complete documentation index, see llms.txt. This page is also available as Markdown.

Comment Operators

Use these comment operators to set or retrieve comments. Note that line comments on maps/arrays are actually set on the key node as opposed to the value (map/array). See below for examples.

Like the = and |= assign operators, the same syntax applies when updating comments:

plain form: =

This will set the LHS nodes' comments equal to the expression on the RHS. The RHS is run against the matching nodes in the pipeline

relative form: |=

This is similar to the plain form, but it evaluates the RHS with each matching LHS node as context. This is useful if you want to set the comments as a relative expression of the node, for instance its value or path.

Set line comment

Set the comment on the key node for more reliability (see below).

Given a sample.yml file of:

a: cat

then

yq '.a line_comment="single"' sample.yml

will output

a: cat # single

Set line comment of a maps/arrays

For maps and arrays, you need to set the line comment on the key node. This will also work for scalars.

Given a sample.yml file of:

then

will output

Use update assign to perform relative updates

Given a sample.yml file of:

then

will output

Where is the comment - map key example

The underlying yaml parser can assign comments in a document to surprising nodes. Use an expression like this to find where you comment is. 'p' indicates the path, 'isKey' is if the node is a map key (as opposed to a map value). From this, you can see the 'hello-world-comment' is actually on the 'hello' key

Given a sample.yml file of:

then

will output

Retrieve comment - map key example

From the previous example, we know that the comment is on the 'hello' key as a lineComment

Given a sample.yml file of:

then

will output

Where is the comment - array example

The underlying yaml parser can assign comments in a document to surprising nodes. Use an expression like this to find where you comment is. 'p' indicates the path, 'isKey' is if the node is a map key (as opposed to a map value). From this, you can see the 'under-name-comment' is actually on the first child

Given a sample.yml file of:

then

will output

Retrieve comment - array example

From the previous example, we know that the comment is on the first child as a headComment

Given a sample.yml file of:

then

will output

Set head comment

Given a sample.yml file of:

then

will output

Set head comment of a map entry

Given a sample.yml file of:

then

will output

Set foot comment, using an expression

Given a sample.yml file of:

then

will output

Remove comment

Given a sample.yml file of:

then

will output

Remove (strip) all comments

Note the use of ... to ensure key nodes are included.

Given a sample.yml file of:

then

will output

Get line comment

Given a sample.yml file of:

then

will output

Get head comment

Given a sample.yml file of:

then

will output

Head comment with document split

Given a sample.yml file of:

then

will output

Get foot comment

Given a sample.yml file of:

then

will output

Last updated