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

72 lines
1.2 KiB
Markdown
Raw Normal View History

2022-03-09 03:38:02 +00:00
# Pick
Filter a map by the specified list of keys. Map is returned with the key in the order of the pick list.
2022-03-10 02:50:53 +00:00
Similarly, filter an array by the specified list of indices.
2022-03-09 03:38:02 +00:00
## Pick keys from map
Note that the order of the keys matches the pick order and non existent keys are skipped.
Given a sample.yml file of:
```yaml
myMap:
cat: meow
dog: bark
thing: hamster
hamster: squeak
2022-03-09 03:38:02 +00:00
```
then
```bash
yq '.myMap |= pick(["hamster", "cat", "goat"])' sample.yml
```
will output
```yaml
myMap:
hamster: squeak
2022-03-09 03:38:02 +00:00
cat: meow
```
2024-09-06 02:32:28 +00:00
## Pick keys from map, included all the keys
We create a map of the picked keys plus all the current keys, and run that through unique
Given a sample.yml file of:
```yaml
myMap:
cat: meow
dog: bark
thing: hamster
hamster: squeak
```
then
```bash
yq '.myMap |= pick( (["thing"] + keys) | unique)' sample.yml
```
will output
```yaml
myMap:
thing: hamster
cat: meow
dog: bark
hamster: squeak
```
2022-03-09 03:38:02 +00:00
## Pick indices from array
Note that the order of the indices matches the pick order and non existent indices are skipped.
2022-03-09 03:38:02 +00:00
Given a sample.yml file of:
```yaml
- cat
- leopard
- lion
```
then
```bash
yq 'pick([2, 0, 734, -5])' sample.yml
```
will output
```yaml
- lion
- cat
```