yq/pkg/yqlib/doc/operators/file-operators.md

81 lines
1.3 KiB
Markdown
Raw Normal View History

2021-11-03 04:00:58 +00:00
# File Operators
File operators are most often used with merge when needing to merge specific files together. Note that when doing this, you will need to use `eval-all` to ensure all yaml documents are loaded into memory before performing the merge (as opposed to `eval` which runs the expression once per document).
Note that the `fileIndex` operator has a short alias of `fi`.
## Merging files
Note the use of eval-all to ensure all documents are loaded into memory.
```bash
yq eval-all 'select(fi == 0) * select(filename == "file2.yaml")' file1.yaml file2.yaml
```
2022-02-06 03:39:46 +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-11-03 04:00:58 +00:00
## Get filename
Given a sample.yml file of:
```yaml
a: cat
```
then
```bash
2022-01-27 06:21:10 +00:00
yq 'filename' sample.yml
2021-11-03 04:00:58 +00:00
```
will output
```yaml
sample.yml
```
## Get file index
Given a sample.yml file of:
```yaml
a: cat
```
then
```bash
2022-01-27 06:21:10 +00:00
yq 'fileIndex' sample.yml
2021-11-03 04:00:58 +00:00
```
will output
```yaml
0
```
## Get file indices of multiple documents
Given a sample.yml file of:
```yaml
a: cat
```
And another sample another.yml file of:
```yaml
a: cat
```
then
```bash
yq eval-all 'fileIndex' sample.yml another.yml
```
will output
```yaml
0
---
1
```
## Get file index alias
Given a sample.yml file of:
```yaml
a: cat
```
then
```bash
2022-01-27 06:21:10 +00:00
yq 'fi' sample.yml
2021-11-03 04:00:58 +00:00
```
will output
```yaml
0
```