sort 排序命令

发布时间: 更新时间: 总字数:575 阅读时间:2m 作者: IP上海 分享 网址

Linux sort 排序命令

help

$ 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

说明:

  • -t, --field-separator=分隔符 使用指定的分隔符代替非空格到空格的转换
  • -o 输出到另一个文件
  • -r 倒序排列
  • -n 数字排序
  • -k 对特定列进行排序,内容 abc 100,对第二列排序 sort -k 2n,n 表示数字
  • -c 检查是否已经排序
  • -u 去掉文件中重复的行

示例

版本排序

按照版本排序 https://www.gnu.org/software/coreutils/manual/html_node/Version-sort-overview.html

$ cat test.txt
1.1.2.1
1.0.0.1
1.3.3.2
1.0.12.2
1.0.12.1

$ sort -V test.txt
1.0.0.1
1.0.12.1
1.0.12.2
1.1.2.1
1.3.3.2

$ sort --version-sort test.txt
1.0.0.1
1.0.12.1
1.0.12.2
1.1.2.1
1.3.3.2

$ sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n test.txt
1.0.0.1
1.0.12.1
1.0.12.2
1.1.2.1
1.3.3.2

多行排序

$ cat test.txt
x,10,400
y,9,500
a,10,500
b,9,400
z,2,600

$ sort -t ',' -k 3r -k 2n test.txt
z,2,600
y,9,500
a,10,500
b,9,400
x,10,400

文件行去重

sort 1.md | uniq -d
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数