2021-11-03 04:00:58 +00:00
|
|
|
# Unique
|
|
|
|
|
2022-05-06 03:46:14 +00:00
|
|
|
This is used to filter out duplicated items in an array. Note that the original order of the array is maintained.
|
|
|
|
|
2021-11-03 04:00:58 +00:00
|
|
|
|
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
|
|
|
## Unique array of scalars (string/numbers)
|
2022-04-29 02:16:57 +00:00
|
|
|
Note that unique maintains the original order of the array.
|
|
|
|
|
2021-11-03 04:00:58 +00:00
|
|
|
Given a sample.yml file of:
|
|
|
|
```yaml
|
|
|
|
- 2
|
2022-04-29 02:16:57 +00:00
|
|
|
- 1
|
2021-11-03 04:00:58 +00:00
|
|
|
- 3
|
|
|
|
- 2
|
|
|
|
```
|
|
|
|
then
|
|
|
|
```bash
|
2022-01-27 06:21:10 +00:00
|
|
|
yq 'unique' sample.yml
|
2021-11-03 04:00:58 +00:00
|
|
|
```
|
|
|
|
will output
|
|
|
|
```yaml
|
|
|
|
- 2
|
2022-04-29 02:16:57 +00:00
|
|
|
- 1
|
2021-11-03 04:00:58 +00:00
|
|
|
- 3
|
|
|
|
```
|
|
|
|
|
|
|
|
## Unique nulls
|
|
|
|
Unique works on the node value, so it considers different representations of nulls to be different
|
|
|
|
|
|
|
|
Given a sample.yml file of:
|
|
|
|
```yaml
|
|
|
|
- ~
|
|
|
|
- null
|
|
|
|
- ~
|
|
|
|
- null
|
|
|
|
```
|
|
|
|
then
|
|
|
|
```bash
|
2022-01-27 06:21:10 +00:00
|
|
|
yq 'unique' sample.yml
|
2021-11-03 04:00:58 +00:00
|
|
|
```
|
|
|
|
will output
|
|
|
|
```yaml
|
|
|
|
- ~
|
|
|
|
- null
|
|
|
|
```
|
|
|
|
|
|
|
|
## Unique all nulls
|
|
|
|
Run against the node tag to unique all the nulls
|
|
|
|
|
|
|
|
Given a sample.yml file of:
|
|
|
|
```yaml
|
|
|
|
- ~
|
|
|
|
- null
|
|
|
|
- ~
|
|
|
|
- null
|
|
|
|
```
|
|
|
|
then
|
|
|
|
```bash
|
2022-01-27 06:21:10 +00:00
|
|
|
yq 'unique_by(tag)' sample.yml
|
2021-11-03 04:00:58 +00:00
|
|
|
```
|
|
|
|
will output
|
|
|
|
```yaml
|
|
|
|
- ~
|
|
|
|
```
|
|
|
|
|
|
|
|
## Unique array object fields
|
|
|
|
Given a sample.yml file of:
|
|
|
|
```yaml
|
|
|
|
- name: harry
|
|
|
|
pet: cat
|
|
|
|
- name: billy
|
|
|
|
pet: dog
|
|
|
|
- name: harry
|
|
|
|
pet: dog
|
|
|
|
```
|
|
|
|
then
|
|
|
|
```bash
|
2022-01-27 06:21:10 +00:00
|
|
|
yq 'unique_by(.name)' sample.yml
|
2021-11-03 04:00:58 +00:00
|
|
|
```
|
|
|
|
will output
|
|
|
|
```yaml
|
|
|
|
- name: harry
|
|
|
|
pet: cat
|
|
|
|
- name: billy
|
|
|
|
pet: dog
|
|
|
|
```
|
|
|
|
|