yq/pkg/yqlib/doc/operators/keys.md
2023-05-09 13:51:21 +10:00

1.6 KiB

Keys

Use the keys operator to return map keys or array indices.

Map keys

Given a sample.yml file of:

{dog: woof, cat: meow}

then

yq 'keys' sample.yml

will output

- dog
- cat

Array keys

Given a sample.yml file of:

[apple, banana]

then

yq 'keys' sample.yml

will output

- 0
- 1

Retrieve array key

Given a sample.yml file of:

[1, 2, 3]

then

yq '.[1] | key' sample.yml

will output

1

Retrieve map key

Given a sample.yml file of:

a: thing

then

yq '.a | key' sample.yml

will output

a

No key

Given a sample.yml file of:

{}

then

yq 'key' sample.yml

will output

Update map key

Given a sample.yml file of:

a:
  x: 3
  y: 4

then

yq '(.a.x | key) = "meow"' sample.yml

will output

a:
  meow: 3
  y: 4

Get comment from map key

Given a sample.yml file of:

a:
  # comment on key
  x: 3
  y: 4

then

yq '.a.x | key | headComment' sample.yml

will output

comment on key

Check node is a key

Given a sample.yml file of:

a:
  b:
    - cat
  c: frog

then

yq '[... | { "p": path | join("."), "isKey": is_key, "tag": tag }]' sample.yml

will output

- p: ""
  isKey: false
  tag: '!!map'
- p: a
  isKey: true
  tag: '!!str'
- p: a
  isKey: false
  tag: '!!map'
- p: a.c
  isKey: true
  tag: '!!str'
- p: a.b
  isKey: false
  tag: '!!seq'
- p: a.b.0
  isKey: false
  tag: '!!str'
- p: a.c
  isKey: false
  tag: '!!str'