1
0
mirror of https://github.com/taigrr/yq synced 2025-01-18 04:53:17 -08:00
yq/pkg/yqlib/doc/Reduce.md
2021-02-15 16:38:53 +11:00

1002 B

Reduce is a powerful way to process a collection of data into a new form.

yq vs jq syntax

Reduce syntax in yq is a little different from jq - as yq (currently) isn't as sophisticated as jq and its only supports infix notation (e.g. a + b, the operator is in the middle of the two parameters) - where as jq uses a mix of infix notation with prefix notation (e.g. reduce a b is like writing + a b).

To that end, the reduce operator is called ireduce for backwards compatability if a prefix version of reduce is ever added.

Sum numbers

Given a sample.yml file of:

- 10
- 2
- 5
- 3

then

yq eval '.[] as $item ireduce (0; . + $item)' sample.yml

will output

20

Convert an array to an object

Given a sample.yml file of:

- name: Cathy
  has: apples
- name: Bob
  has: bananas

then

yq eval '.[] as $item ireduce ({}; .[$item | .name] = ($item | .has) )' sample.yml

will output

Cathy: apples
Bob: bananas