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

115 lines
1.8 KiB
Markdown
Raw Permalink Normal View History

2021-11-03 04:00:58 +00:00
# Contains
2022-10-31 22:29:05 +00:00
This returns `true` if the context contains the passed in parameter, and false otherwise. For arrays, this will return true if the passed in array is contained within the array. For strings, it will return true if the string is a substring.
{% hint style="warning" %}
_Note_ that, just like jq, when checking if an array of strings `contains` another, this will use `contains` and _not_ equals to check each string. This means an array like `contains(["cat"])` will return true for an array `["cats"]`.
See the "Array has a subset array" example below on how to check for a subset.
{% endhint %}
2021-11-03 04:00:58 +00:00
## Array contains array
Array is equal or subset of
Given a sample.yml file of:
```yaml
- foobar
- foobaz
- blarp
```
then
```bash
2022-01-27 06:21:10 +00:00
yq 'contains(["baz", "bar"])' sample.yml
2021-11-03 04:00:58 +00:00
```
will output
```yaml
true
```
2022-10-31 22:29:05 +00:00
## Array has a subset array
Subtract the superset array from the subset, if there's anything left, it's not a subset
Given a sample.yml file of:
```yaml
- foobar
- foobaz
- blarp
```
then
```bash
yq '["baz", "bar"] - . | length == 0' sample.yml
```
will output
```yaml
false
```
2021-11-03 04:00:58 +00:00
## Object included in array
Given a sample.yml file of:
```yaml
"foo": 12
"bar":
- 1
- 2
- "barp": 12
"blip": 13
```
then
```bash
2022-01-27 06:21:10 +00:00
yq 'contains({"bar": [{"barp": 12}]})' sample.yml
2021-11-03 04:00:58 +00:00
```
will output
```yaml
true
```
## Object not included in array
Given a sample.yml file of:
```yaml
"foo": 12
"bar":
- 1
- 2
- "barp": 12
"blip": 13
```
then
```bash
2022-01-27 06:21:10 +00:00
yq 'contains({"foo": 12, "bar": [{"barp": 15}]})' sample.yml
2021-11-03 04:00:58 +00:00
```
will output
```yaml
false
```
## String contains substring
Given a sample.yml file of:
```yaml
foobar
```
then
```bash
2022-01-27 06:21:10 +00:00
yq 'contains("bar")' sample.yml
2021-11-03 04:00:58 +00:00
```
will output
```yaml
true
```
## String equals string
Given a sample.yml file of:
```yaml
meow
```
then
```bash
2022-01-27 06:21:10 +00:00
yq 'contains("meow")' sample.yml
2021-11-03 04:00:58 +00:00
```
will output
```yaml
true
```