Hello, Attached is a working version of numfmt.
The following are implemented:
===
Usage: ./src/numfmt [OPTIONS] [NUMBER]
Reformats NUMBER(s) to/from human-readable values.
Numbers can be processed either from stdin or command arguments.
--from=UNIT Auto-scale input numbers to UNITs. Default is 'none'.
See UNIT below.
--from-unit=N Specify the input unit size (instead of the default 1).
--to=UNIT Auto-scale output numbers to UNITs.
See UNIT below.
--to-unit=N Specify the output unit size (instead of the default 1).
--round=METHOD Round input numbers. METHOD can be:
ceiling (the default), floor, nearest
--suffix=SUFFIX Add SUFFIX to output numbers, and accept optional SUFFIX
in input numbers.
--padding=N Pad the output to N characters.
Default is right-aligned. Negative N will left-align.
Note: if N is too small, the output will be truncated,
and a warning will be printed to stderr.
--grouping Group digits together (e.g. 1,000,000).
Uses the locale-defined grouping (i.e. have no effect
in C/POSIX locales).
--field N Replace the number in input field N (default is 1)
-d, --delimiter=X use X instead of whitespace for field delimiter
===
Also included in the patch is a test file, testing all sorts of combination of
the parameters (hopefully catches most of the corner cases).
There's also an undocumented option "--debug" that will show what's going on:
===
$ /src/numfmt --debug --field 2 --suffix=Foo --from=SI --to=IEC "Hello 70MFoo
World"
Extracting Fields:
input: 'Hello 70MFoo World'
field: 2
prefix: 'Hello'
number: '70MFoo'
suffix: 'World'
Trimming suffix 'Foo'
Parsing number:
input string: '70M'
remaining characters: ''
numeric value: 70000000
Formatting output:
value: 70000000
humanized: '67M'
Hello 67MFoo World
===
Comments are welcomed,
-gordon
numfmt3.patch.gz
Description: GNU Zip compressed data
