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
|
|
|
|
```
|
|
|
|
|