pkg/yqlib/doc/operators/sort.md
Sorts an array. Use sort to sort an array as is, or sort_by(exp) to sort by a particular expression (e.g. subfield).
To sort by descending order, pipe the results through the reverse operator after sorting.
Note that at this stage, yq only sorts scalar fields.
Given a sample.yml file of:
- a: banana
- a: cat
- a: apple
then
yq 'sort_by(.a)' sample.yml
will output
- a: apple
- a: banana
- a: cat
Given a sample.yml file of:
- a: dog
- a: cat
b: banana
- a: cat
b: apple
then
yq 'sort_by(.a, .b)' sample.yml
will output
- a: cat
b: apple
- a: cat
b: banana
- a: dog
Use sort with reverse to sort in descending order.
Given a sample.yml file of:
- a: banana
- a: cat
- a: apple
then
yq 'sort_by(.a) | reverse' sample.yml
will output
- a: cat
- a: banana
- a: apple
Given a sample.yml file of:
cool:
- a: banana
- a: cat
- a: apple
then
yq '.cool |= sort_by(.a)' sample.yml
will output
cool:
- a: apple
- a: banana
- a: cat
Note that you can give sort_by complex expressions, not just paths
Given a sample.yml file of:
cool:
- b: banana
- a: banana
- c: banana
then
yq '.cool |= sort_by(keys | .[0])' sample.yml
will output
cool:
- a: banana
- b: banana
- c: banana
Sorting a map, by default this will sort by the values
Given a sample.yml file of:
y: b
z: a
x: c
then
yq 'sort' sample.yml
will output
z: a
y: b
x: c
Use sort_by to sort a map using a custom function
Given a sample.yml file of:
Y: b
z: a
x: c
then
yq 'sort_by(key | downcase)' sample.yml
will output
x: c
Y: b
z: a
Note the order of the elements in unchanged when equal in sorting.
Given a sample.yml file of:
- a: banana
b: 1
- a: banana
b: 2
- a: banana
b: 3
- a: banana
b: 4
then
yq 'sort_by(.a)' sample.yml
will output
- a: banana
b: 1
- a: banana
b: 2
- a: banana
b: 3
- a: banana
b: 4
Given a sample.yml file of:
- a: 10
- a: 100
- a: 1
then
yq 'sort_by(.a)' sample.yml
will output
- a: 1
- a: 10
- a: 100
Given a sample.yml file of:
- a: 12-Jun-2011
- a: 23-Dec-2010
- a: 10-Aug-2011
then
yq 'with_dtf("02-Jan-2006"; sort_by(.a))' sample.yml
will output
- a: 23-Dec-2010
- a: 12-Jun-2011
- a: 10-Aug-2011
Given a sample.yml file of:
- 8
- 3
- null
- 6
- true
- false
- cat
then
yq 'sort' sample.yml
will output
- null
- false
- true
- 3
- 6
- 8
- cat