numfmt

v0.0.26
numfmt [OPTION]... [NUMBER]...

Convert numbers from/to human-readable strings

Options

--delimiter=<X>, -d <X>

use X instead of whitespace for field delimiter

--field=<FIELDS>

replace the numbers in these input fields; see FIELDS below

--format=<FORMAT>

use printf style floating-point FORMAT; see FORMAT below for details

--from=<UNIT>

auto-scale input numbers to UNITs; see UNIT below

--from-unit=<N>

specify the input unit size

--to=<UNIT>

auto-scale output numbers to UNITs; see UNIT below

--to-unit=<N>

the output unit size

--padding=<N>

pad the output to N characters; positive N will right-align; negative N will left-align; padding is ignored if the output is wider than N; the default is to automatically pad if a whitespace is found

--header=<N>

print (without converting) the first N header lines; N defaults to 1 if not specified

--round=<METHOD>

use METHOD for rounding when scaling

--suffix=<SUFFIX>

print SUFFIX after each formatted number, and accept inputs optionally ending with SUFFIX

--invalid=<INVALID>

set the failure mode for invalid input

UNIT options:

  • none: no auto-scaling is done; suffixes will trigger an error

  • auto: accept optional single/two letter suffix:

    1K = 1000, 1Ki = 1024, 1M = 1000000, 1Mi = 1048576,

  • si: accept optional single letter suffix:

    1K = 1000, 1M = 1000000, ...

  • iec: accept optional single letter suffix:

    1K = 1024, 1M = 1048576, ...

  • iec-i: accept optional two-letter suffix:

    1Ki = 1024, 1Mi = 1048576, ...

  • FIELDS supports cut(1) style field ranges:

    N N'th field, counted from 1 N- from N'th field, to end of line N-M from N'th to M'th field (inclusive) -M from first to M'th field (inclusive)

    • all fields

Multiple fields/ranges can be separated with commas

FORMAT must be suitable for printing one floating-point argument %f. Optional quote (%'f) will enable --grouping (if supported by current locale). Optional width value (%10f) will pad output. Optional zero (%010f) width will zero pad the number. Optional negative values (%-10f) will left align. Optional precision (%.1f) will override the input determined precision.

Examples

Convert 1.5K (SI Units) to 1500:

numfmt --from={{si}} {{1.5K}}

Convert 5th field (1-indexed) to IEC Units without converting header:

ls -l | numfmt --header={{1}} --field={{5}} --to={{iec}}

Convert to IEC units, pad with 5 characters, left aligned:

du -s * | numfmt --to={{iec}} --format="{{%-5f}}"

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.