sort-by

For filters.

Sort by the given cell path or closure.

Command Type

built-in

Signature

> sort-by {flags} ...rest

Flags

  • --reverse, -r: Sort in reverse order.
  • --ignore-case, -i: Sort string-based data case-insensitively.
  • --natural, -n: Sort alphanumeric string-based data naturally (1, 9, 10, 99, 100, …).
  • --custom, -c: Use closures to specify a custom sort order, rather than to compute a comparison key.

Parameters

  • ...rest: The cell path(s) or closure(s) to compare elements by.

Input/output types:

input output
list<any> list<any>
record table
table table

Examples

Sort files by modified date.

> ls | sort-by modified

Sort files by name (case-insensitive).

> ls | sort-by name --ignore-case

Sort a table by a column (reversed order).

> [[fruit count]; [apple 9] [pear 3] [orange 7]] | sort-by fruit --reverse
╭───┬────────┬───────╮
│ # │ fruit  │ count │
├───┼────────┼───────┤
│ 0 │ pear   │     3 │
│ 1 │ orange │     7 │
│ 2 │ apple  │     9 │
╰───┴────────┴───────╯

Sort by a nested value.

> [[name info]; [Cairo {founded: 969}] [Kyoto {founded: 794}]] | sort-by info.founded
╭───┬───────┬───────────────────╮
│ # │ name  │       info        │
├───┼───────┼───────────────────┤
│ 0 │ Kyoto │ ╭─────────┬─────╮ │
│   │       │ │ founded │ 794 │ │
│   │       │ ╰─────────┴─────╯ │
│ 1 │ Cairo │ ╭─────────┬─────╮ │
│   │       │ │ founded │ 969 │ │
│   │       │ ╰─────────┴─────╯ │
╰───┴───────┴───────────────────╯

Sort by the last value in a list.

> [[2 50] [10 1]] | sort-by { last }
╭───┬────────────╮
│ 0 │ ╭───┬────╮ │
│   │ │ 0 │ 10 │ │
│   │ │ 1 │  1 │ │
│   │ ╰───┴────╯ │
│ 1 │ ╭───┬────╮ │
│   │ │ 0 │  2 │ │
│   │ │ 1 │ 50 │ │
│   │ ╰───┴────╯ │
╰───┴────────────╯

Sort in a custom order.

> [7 3 2 8 4] | sort-by -c {|a, b| $a < $b}
╭───┬───╮
│ 0 │ 2 │
│ 1 │ 3 │
│ 2 │ 4 │
│ 3 │ 7 │
│ 4 │ 8 │
╰───┴───╯

Ported from nushell/nushell.github.io. Copyright (c) 2021 Nushell Project. MIT License.