yq/pkg/yqlib/doc/Recursive Descent.md
Mike Farah f7f8bed955 wip
2020-12-27 09:55:21 +11:00

989 B

This operator recursively matches all children nodes given of a particular element, including that node itself. This is most often used to apply a filter recursively against all matches, for instance to set the style of all nodes in a yaml doc:

yq eval '.. style= "flow"' file.yaml

Aliases are not traversed

Given a sample.yml file of:

a: &cat {c: frog}
b: *cat
'': null

then

yq eval '[..]' sample.yml

will output

- a: &cat {c: frog}
  b: *cat
  '': null
- null

Merge docs are not traversed

Given a sample.yml file of:

foo: &foo
  a: foo_a
  thing: foo_thing
  c: foo_c
bar: &bar
  b: bar_b
  thing: bar_thing
  c: bar_c
foobarList:
  b: foobarList_b
  !!merge <<: [*foo, *bar]
  c: foobarList_c
foobar:
  c: foobar_c
  !!merge <<: *foo
  thing: foobar_thing
'': null

then

yq eval '.foobar | [..]' sample.yml

will output

- c: foobar_c
  !!merge <<: *foo
  thing: foobar_thing
  '': null
- null