mirror of
https://github.com/nushell/nushell
synced 2024-12-30 23:08:56 +00:00
303a9defd3
* added math product: working initial impl * resolving merge conflicts * impl std::ops::Mul for Filesize * rebased with main; refactored product implementation * fixed error msg, added docs for math product
5.1 KiB
5.1 KiB
math
Mathematical functions that generally only operate on a list of numbers (integers, decimals, bytes) and tables. Currently the following functions are implemented:
math avg
: Finds the average of a list of numbers or tablesmath eval
: Evaluates a list of math expressions into numbersmath min
: Finds the minimum within a list of numbers or tablesmath max
: Finds the maximum within a list of numbers or tablesmath median
: Finds the median of a list of numbers or tablesmath sum
: Finds the sum of a list of numbers or tablesmath product
: Finds the product of a list of numbers or tables
However, the mathematical functions like min
and max
are more permissive and also work on Dates
.
Examples
To get the average of the file sizes in a directory, simply pipe the size column from the ls command to the average command.
List of Numbers (Integers, Decimals, Bytes)
> ls
# │ name │ type │ size │ modified
────┼────────────────────┼──────┼──────────┼─────────────
0 │ CODE_OF_CONDUCT.md │ File │ 3.4 KB │ 4 days ago
1 │ CONTRIBUTING.md │ File │ 1.3 KB │ 4 days ago
2 │ Cargo.lock │ File │ 106.3 KB │ 6 mins ago
3 │ Cargo.toml │ File │ 4.6 KB │ 3 days ago
4 │ LICENSE │ File │ 1.1 KB │ 4 days ago
5 │ Makefile.toml │ File │ 449 B │ 4 days ago
6 │ README.md │ File │ 16.0 KB │ 6 mins ago
7 │ TODO.md │ File │ 0 B │ 6 mins ago
8 │ assets │ Dir │ 128 B │ 4 days ago
9 │ build.rs │ File │ 78 B │ 4 days ago
10 │ crates │ Dir │ 672 B │ 3 days ago
11 │ debian │ Dir │ 352 B │ 4 days ago
12 │ docker │ Dir │ 288 B │ 4 days ago
13 │ docs │ Dir │ 160 B │ 4 days ago
14 │ features.toml │ File │ 632 B │ 4 days ago
15 │ images │ Dir │ 160 B │ 4 days ago
16 │ justfile │ File │ 234 B │ 3 days ago
17 │ rustfmt.toml │ File │ 16 B │ 4 days ago
18 │ src │ Dir │ 128 B │ 4 days ago
19 │ target │ Dir │ 192 B │ 8 hours ago
20 │ tests │ Dir │ 192 B │ 4 days ago
> ls | get size | math avg
───┬────────
# │
───┼────────
0 │ 7.2 KB
───┴────────
> ls | get size | math min
───┬─────
# │
───┼─────
0 │ 0 B
───┴─────
> ls | get size | math max
───┬──────────
# │
───┼──────────
0 │ 113.6 KB
───┴──────────
> ls | get size | math median
───┬───────
# │
───┼───────
0 │ 320 B
───┴───────
> ls | get size | math sum
───┬──────────
# │
───┼──────────
0 │ 143.6 KB
───┴──────────
> echo [2 3 3 4] | math product
72
Dates
> ls | get modified | math min
2020-06-09 17:25:51.798743222 UTC
> ls | get modified | math max
2020-06-14 05:49:59.637449186 UT
Operations on tables
> pwd | split row / | size
───┬───────┬───────┬───────┬────────────
# │ lines │ words │ chars │ max length
───┼───────┼───────┼───────┼────────────
0 │ 0 │ 1 │ 5 │ 5
1 │ 0 │ 1 │ 11 │ 11
2 │ 0 │ 1 │ 11 │ 11
3 │ 0 │ 1 │ 4 │ 4
4 │ 0 │ 2 │ 12 │ 12
5 │ 0 │ 1 │ 7 │ 7
───┴───────┴───────┴───────┴────────────
> pwd | split row / | size | math max
────────────┬────
lines │ 0
words │ 2
chars │ 12
max length │ 12
────────────┴────
> pwd | split row / | size | math avg
────────────┬────────
lines │ 0.0000
words │ 1.1666
chars │ 8.3333
max length │ 8.3333
────────────┴────────
To get the sum of the characters that make up your present working directory.
> pwd | split row / | size | get chars | math sum
50
Errors
math
functions are aggregation functions so empty lists are invalid
> echo [] | math avg
error: Error: Unexpected: Cannot perform aggregate math operation on empty data