yq/operators/keys.md

121 lines
1.3 KiB
Markdown
Raw Normal View History

2021-10-30 03:14:39 +00:00
# Keys
2021-11-03 04:00:28 +00:00
Use the `keys` operator to return map keys or array indices.
2021-10-30 03:14:39 +00:00
2022-02-06 03:41:27 +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-10-30 03:14:39 +00:00
## Map keys
Given a sample.yml file of:
```yaml
dog: woof
cat: meow
```
then
```bash
2022-01-28 01:45:43 +00:00
yq 'keys' sample.yml
2021-10-30 03:14:39 +00:00
```
will output
```yaml
- dog
- cat
```
## Array keys
Given a sample.yml file of:
```yaml
- apple
- banana
```
then
```bash
2022-01-28 01:45:43 +00:00
yq 'keys' sample.yml
2021-10-30 03:14:39 +00:00
```
will output
```yaml
- 0
- 1
```
2021-11-03 04:00:28 +00:00
2021-11-24 00:15:42 +00:00
## Retrieve array key
Given a sample.yml file of:
```yaml
- 1
- 2
- 3
```
then
```bash
2022-01-28 01:45:43 +00:00
yq '.[1] | key' sample.yml
2021-11-24 00:15:42 +00:00
```
will output
```yaml
1
```
## Retrieve map key
Given a sample.yml file of:
```yaml
a: thing
```
then
```bash
2022-01-28 01:45:43 +00:00
yq '.a | key' sample.yml
2021-11-24 00:15:42 +00:00
```
will output
```yaml
a
```
## No key
Given a sample.yml file of:
```yaml
{}
```
then
```bash
2022-01-28 01:45:43 +00:00
yq 'key' sample.yml
2021-11-24 00:15:42 +00:00
```
will output
```yaml
```
## Update map key
Given a sample.yml file of:
```yaml
a:
x: 3
y: 4
```
then
```bash
2022-01-28 01:45:43 +00:00
yq '(.a.x | key) = "meow"' sample.yml
2021-11-24 00:15:42 +00:00
```
will output
```yaml
a:
meow: 3
y: 4
```
## Get comment from map key
Given a sample.yml file of:
```yaml
a:
# comment on key
x: 3
y: 4
```
then
```bash
2022-01-28 01:45:43 +00:00
yq '.a.x | key | headComment' sample.yml
2021-11-24 00:15:42 +00:00
```
will output
```yaml
comment on key
```