yq/operators/entries.md
2022-02-06 14:41:27 +11:00

1.6 KiB

Entries

Similar to the same named functions in jq these functions convert to/from an object and an array of key-value pairs. This is most useful for performing operations on keys of maps.

{% hint style="warning" %} Note that versions prior to 4.18 require the 'eval/e' command to be specified.

yq e <exp> <file> {% endhint %}

to_entries Map

Given a sample.yml file of:

a: 1
b: 2

then

yq 'to_entries' sample.yml

will output

- key: a
  value: 1
- key: b
  value: 2

to_entries Array

Given a sample.yml file of:

- a
- b

then

yq 'to_entries' sample.yml

will output

- key: 0
  value: a
- key: 1
  value: b

to_entries null

Given a sample.yml file of:

null

then

yq 'to_entries' sample.yml

will output

from_entries map

Given a sample.yml file of:

a: 1
b: 2

then

yq 'to_entries | from_entries' sample.yml

will output

a: 1
b: 2

from_entries with numeric key indexes

from_entries always creates a map, even for numeric keys

Given a sample.yml file of:

- a
- b

then

yq 'to_entries | from_entries' sample.yml

will output

0: a
1: b

Use with_entries to update keys

Given a sample.yml file of:

a: 1
b: 2

then

yq 'with_entries(.key |= "KEY_" + .)' sample.yml

will output

KEY_a: 1
KEY_b: 2

Use with_entries to filter the map

Given a sample.yml file of:

a:
  b: bird
c:
  d: dog

then

yq 'with_entries(select(.value | has("b")))' sample.yml

will output

a:
  b: bird