yq/operators/document-index.md

98 lines
1.2 KiB
Markdown
Raw Normal View History

2021-10-30 03:14:39 +00:00
# Document Index
Use the `documentIndex` operator (or the `di` shorthand) to select nodes of a particular document.
2022-02-06 03:41:27 +00:00
{% hint style="warning" %}
Note that versions prior to 4.18 require the 'eval/e' command to be specified. 
`yq e <exp> <file>`
{% endhint %}
2021-10-30 03:14:39 +00:00
## Retrieve a document index
Given a sample.yml file of:
```yaml
a: cat
---
a: frog
```
then
```bash
2022-02-15 03:16:04 +00:00
yq '.a | document_index' sample.yml
2021-10-30 03:14:39 +00:00
```
will output
```yaml
0
---
1
```
## Retrieve a document index, shorthand
Given a sample.yml file of:
```yaml
a: cat
---
a: frog
```
then
```bash
2022-01-28 01:45:43 +00:00
yq '.a | di' sample.yml
2021-10-30 03:14:39 +00:00
```
will output
```yaml
0
---
1
```
## Filter by document index
Given a sample.yml file of:
```yaml
a: cat
---
a: frog
```
then
```bash
2022-02-15 03:16:04 +00:00
yq 'select(document_index == 1)' sample.yml
2021-10-30 03:14:39 +00:00
```
will output
```yaml
a: frog
```
## Filter by document index shorthand
Given a sample.yml file of:
```yaml
a: cat
---
a: frog
```
then
```bash
2022-01-28 01:45:43 +00:00
yq 'select(di == 1)' sample.yml
2021-10-30 03:14:39 +00:00
```
will output
```yaml
a: frog
```
## Print Document Index with matches
Given a sample.yml file of:
```yaml
a: cat
---
a: frog
```
then
```bash
2022-02-15 03:16:04 +00:00
yq '.a | ({"match": ., "doc": document_index})' sample.yml
2021-10-30 03:14:39 +00:00
```
will output
```yaml
match: cat
doc: 0
match: frog
doc: 1
```
2021-11-03 04:00:28 +00:00