yq/pkg/yqlib/doc/Recursive Descent.md

64 lines
1010 B
Markdown
Raw Normal View History

2020-11-17 22:44:16 +00:00
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:
```bash
2020-11-19 05:45:05 +00:00
yq eval '.. style= "flow"' file.yaml
2020-11-17 22:44:16 +00:00
```
2020-11-22 02:16:54 +00:00
## Aliases are not traversed
2020-11-17 22:44:16 +00:00
Given a sample.yml file of:
```yaml
a: &cat
c: frog
b: *cat
```
then
```bash
2020-11-22 02:16:54 +00:00
yq eval '[..]' sample.yml
2020-11-17 22:44:16 +00:00
```
will output
```yaml
2020-11-22 02:16:54 +00:00
- a: &cat
c: frog
b: *cat
- &cat
2020-11-17 22:44:16 +00:00
c: frog
2020-11-22 02:16:54 +00:00
- frog
- *cat
2020-11-17 22:44:16 +00:00
```
2020-11-22 02:16:54 +00:00
## Merge docs are not traversed
2020-11-17 22:44:16 +00:00
Given a sample.yml file of:
```yaml
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
```
then
```bash
2020-11-22 02:16:54 +00:00
yq eval '.foobar | [..]' sample.yml
2020-11-17 22:44:16 +00:00
```
will output
```yaml
2020-11-22 02:16:54 +00:00
- c: foobar_c
!!merge <<: *foo
thing: foobar_thing
- foobar_c
- *foo
- foobar_thing
2020-11-17 22:44:16 +00:00
```