yq/pkg/yqlib/doc/operators/has.md

77 lines
933 B
Markdown
Raw Normal View History

2021-11-03 04:00:58 +00:00
# Has
This is operation that returns true if the key exists in a map (or index in an array), false otherwise.
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
## Has map key
Given a sample.yml file of:
```yaml
- a: yes
- a: ~
- a:
- b: nope
```
then
```bash
2022-01-27 06:21:10 +00:00
yq '.[] | has("a")' sample.yml
2021-11-03 04:00:58 +00:00
```
will output
```yaml
true
true
true
false
```
## Select, checking for existence of deep paths
Simply pipe in parent expressions into `has`
Given a sample.yml file of:
```yaml
- a:
b:
c: cat
- a:
b:
d: dog
```
then
```bash
2022-01-27 06:21:10 +00:00
yq '.[] | select(.a.b | has("c"))' sample.yml
2021-11-03 04:00:58 +00:00
```
will output
```yaml
a:
b:
c: cat
```
## Has array index
Given a sample.yml file of:
```yaml
- []
- [1]
- [1, 2]
- [1, null]
- [1, 2, 3]
```
then
```bash
2022-01-27 06:21:10 +00:00
yq '.[] | has(1)' sample.yml
2021-11-03 04:00:58 +00:00
```
will output
```yaml
false
false
true
true
true
```