sort命令

2023-05-18 14:42:15 浏览数 (2)

简介

Linux sort 命令用于将文本文件内容加以排序,可针对文本文件的内容,以行为单位来排序(默认以ASCII编码作比较)。

详解

使用命令 sort --help查看使用方法:

代码语言:javascript复制
┌──(root㉿kali)-[~]
└─# sort --help
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
  -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 stderr
      --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              with -c, check for strict ordering;
                              without -c, output only the first of an equal run
  -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.

*** 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.

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Full documentation <https://www.gnu.org/software/coreutils/sort>
or available locally via: info '(coreutils) sort invocation'

Bash

参数说明

-b

忽略每行前面开始出的空格字符。

-c

检查文件是否已经按照顺序排序。

-d

排序时,处理英文字母、数字及空格字符外,忽略其他的字符。

-f

排序时,将小写字母视为大写字母。

-i

排序时,除了040至176之间的ASCII字符外,忽略其他的字符。

-m

将几个排序好的文件进行合并。

-M

将前面3个字母依照月份的缩写进行排序。

-n

依照数值的大小排序。

-u

意味着是唯一的(unique),输出的结果是去完重了的。

-o<输出文件>

将排序后的结果存入指定的文件。

-r

以相反的顺序来排序。

-t<分隔字符>

指定排序时所用的栏位分隔字符。

<起始栏位>-<结束栏位>

以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

--help

显示帮助。

--version

显示版本信息。

[-k field1[,field2]]

按指定的列进行排序。

实例

代码语言:javascript复制
┌──(root㉿kali)-[~/Desktop]
└─# cat test.txt   #输出test.txt内容
abc 12
Abc 11
231 2323
1900 abc
                                                                                                                
┌──(root㉿kali)-[~/Desktop]
└─# sort test.txt   #默认以第一列的值排序
1900 abc
231 2323
Abc 11
abc 12
                                                                                                                
┌──(root㉿kali)-[~/Desktop]
└─# sort -n test.txt 
Abc 11
abc 12
231 2323
1900 abc
                                                                                                                
┌──(root㉿kali)-[~/Desktop]
└─# sort -r test.txt   #反排序
abc 12
Abc 11
231 2323
1900 abc
                                                                                                                
┌──(root㉿kali)-[~/Desktop]
└─# sort -r test.txt -k 2    #以第二列的值进行反排序
1900 abc
231 2323
abc 12
Abc 11

Bash

0 人点赞