sort is missing several options from GNU sort

Open
#192 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Domain
cli

Research direction

The issue provides the current sort help and GNU sort's corresponding options; start at the sort command entry point and its existing option handling. Compare the supported options with GNU sort, then verify that the selected missing options appear in help and behave as documented.

Written by the indexing model from the issue text.

Description

enhancement

Current sort:

sort (V coreutils) 0.0.1
-----------------------------------------------
Usage: sort [options] [FILE]

Description: 
Write sorted concatenation of all FILE(s) to standard output.
With no FILE, or when FILE is -, read standard input.

Options:
  -b, --ignore-leading-blanks
                            ignore leading blanks
  -d, --dictionary-order    consider only blanks and alphanumeric characters
  -f, --ignore-case         fold lower case to upper case characters
  -i, --ignore-non-printing
                            consider only printable characters
  -n, --numeric-sort        Restrict the sort key to an initial numeric
                            string, consisting of optional <blank> characters,
                            optional <hyphen-minus> character, and zero or
                            more digits, which shall be sorted by arithmetic
                            value. An empty digit string shall be treated as
                            zero. Leading zeros shall not affect ordering.
  -r, --reverse             reverse the result of comparisons

Other options:
  -c                        check for sorted input; do not sort
  -C                        like -c, but do not report first bad line
  -k, --key <multiple strings>
                            sort via a key(s); <string> gives location and type
  -m, --merge               merge already sorted files; do not sort
  -t                        use <string> as field separator
  -o, --output <string>     write result to FILE instead of standard output
  -u, --unique              with -c, check for strict ordering;
                            without -c, output only the first of an equal run
  -h, --help                display this help and exit
  --version                 output version information and exit

KEYDEF is F[.C][OPTS][,F[.C][OPTS]] for start and stop position,
where F is a field number and C a character position in the
field; both are origin 1, and the stop position defaults to the
line's end.  If neither -t nor -b is in effect, characters in a
field are counted from the beginning of the preceding whitespace.
OPTS is one or more single-letter ordering options [bdfir], which
override global ordering options for that key. If no key is
given, use the entire line as the key.

Help us make V Coreutils better, by contributing your suggestions,
ideas and pull requests in https://github.com/vlang/coreutils

GNU sort:

Usage: sort [OPTION]... [FILE]...
  or:  sort [OPTION]... --files0-from=F
Write sorted concatenation of all FILE(s) to standard output.

With no FILE, or when FILE is -, read standard input.

Mandatory arguments to long options are mandatory for short options too.
Ordering options:

  -b, --ignore-leading-blanks  ignore leading blanks
  -d, --dictionary-order      consider only blanks and alphanumeric characters
  -f, --ignore-case           fold lower case to upper case characters
  -g, --general-numeric-sort  compare according to general numerical value
  -i, --ignore-nonprinting    consider only printable characters
  -M, --month-sort            compare (unknown) < 'JAN' < ... < 'DEC'
  -h, --human-numeric-sort    compare human readable numbers (e.g., 2K 1G)
  -n, --numeric-sort          compare according to string numerical value;
                                see full documentation for supported strings
  -R, --random-sort           shuffle, but group identical keys.  See shuf(1)
      --random-source=FILE    get random bytes from FILE
  -r, --reverse               reverse the result of comparisons
      --sort=WORD             sort according to WORD:
                                general-numeric -g, human-numeric -h, month -M,
                                numeric -n, random -R, version -V
  -V, --version-sort          natural sort of (version) numbers within text

Other options:

      --batch-size=NMERGE   merge at most NMERGE inputs at once;
                            for more use temp files
  -c, --check, --check=diagnose-first  check for sorted input; do not sort
  -C, --check=quiet, --check=silent  like -c, but do not report first bad line
      --compress-program=PROG  compress temporaries with PROG;
                              decompress them with PROG -d
      --debug               annotate the part of the line used to sort, and
                              warn about questionable usage to standard error
      --files0-from=F       read input from the files specified by
                            NUL-terminated names in file F;
                            If F is - then read names from standard input
  -k, --key=KEYDEF          sort via a key; KEYDEF gives location and type
  -m, --merge               merge already sorted files; do not sort
  -o, --output=FILE         write result to FILE instead of standard output
  -s, --stable              stabilize sort by disabling last-resort comparison
  -S, --buffer-size=SIZE    use SIZE for main memory buffer
  -t, --field-separator=SEP  use SEP instead of non-blank to blank transition
  -T, --temporary-directory=DIR  use DIR for temporaries, not $TMPDIR or /tmp;
                              multiple options specify multiple directories
      --parallel=N          change the number of sorts run concurrently to N
  -u, --unique              output only the first of lines with equal keys;
                              with -c, check for strict ordering
  -z, --zero-terminated     line delimiter is NUL, not newline
      --help        display this help and exit
      --version     output version information and exit

KEYDEF is F[.C][OPTS][,F[.C][OPTS]] for start and stop position, where F is a
field number and C a character position in the field; both are origin 1, and
the stop position defaults to the line's end.  If neither -t nor -b is in
effect, characters in a field are counted from the beginning of the preceding
whitespace.  OPTS is one or more single-letter ordering options [bdfgiMhnRrV],
which override global ordering options for that key.  If no key is given, use
the entire line as the key.  Use --debug to diagnose incorrect key usage.

SIZE may be followed by the following multiplicative suffixes:
% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y, R, Q.

*** WARNING ***
The locale specified by the environment affects sort order.
Set LC_ALL=C to get the traditional sort order that uses
native byte values.

Report bugs to: bug-coreutils@gnu.org
GNU coreutils home page: <https://www.gnu.org/software/coreutils/>
General help using GNU software: <https://www.gnu.org/gethelp/>
Full documentation <https://www.gnu.org/software/coreutils/sort>
or available locally via: info '(coreutils) sort invocation'
Dominant language
V
Stars
199
Forks
49
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from vlang/coreutils

All issues in vlang/coreutils

Similar issues

More CLI issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.