Linux 命令 - sort: 行排序文本文件

命令格式

sort [OPTION]... [FILE]...

 

命令参数

-b, --ignore-leading-blanks
  忽略开头的空白字符。

-d, --dictionary-order
  只考虑空白字符、字母和数字字符。

-f, --ignore-case
  排序时不区分大小写。

-g, --general-numeric-sort
  根据常规数值排序。

-i, --ignore-nonprinting
  只考虑可打印的字符。

-M, --month-sort
  根据月份排序, JAN < ... < DEC。

-h, --human-numeric-sort
  根据适合阅读的数值比较(例如,2K 1G)。

-n, --numeric-sort
  根据字符串数数值比较。

-R, --random-sort
  根据随机 hash 排序。

--random-source=FILE
  从指定的文件中获取随机字节。

-r, --reverse
  反向排序。

-V, --version-sort
  根据版本排序。

-c, --check, --check=diagnose-first
  检查目标文本是否已经排序而不会进行排序。

-C, --check=quiet, --check=silent
  类似 -c 选项,但不报告第一个无序行。

-k, --key=POS1[,POS2]
  对 POS1 与 POS2 之间的字符排序,而不是整个文本行。

-m, --merge
  合并已排好序的文件而不会进行排序。

-o, --output=FILE
  将排序结果输出至指定文件而不是标准输出。

-t, --field-separator=SEP
  定义字段的空格符。默认情况下,字段是由空格或制表符分开的。

-T, --temporary-directory=DIR
  使用 DIR 作为临时目录而不是 $TMPDIR 或 /tmp,可用多个选项指定多个目录。

-z, --zero-terminated
  以 0 字节而非新行作为行尾标志。

--help
  显示帮助信息。

--version
  显示版本信息。

 

实例

测试文件 testfile:

mysql    39216       10.21.28.47       Oct  2 14:29
mail     4981        10.6.0.28         Oct  1 10:54
root     2672        10.6.0.32         Sep 27 15:53
mail     7724        10.6.0.32         Sep 14 11:40
root     18122       10.6.0.32         Aug 30 14:36
mysql    20441       10.21.28.58       Jun 22 21:14
root     5961        10.6.0.32         Jun  6 09:38
admin    60327       10.6.0.203        Mar 11 23:03
mysql    10885       10.6.0.203        Jan 20 12:53
admin    9917        10.6.0.32         Jan 16 17:01

a) 对文本行排序。

[huey@huey-K42JE cmdline]$ sort testfile 
admin    60327       10.6.0.203        Mar 11 23:03
admin    9917        10.6.0.32         Jan 16 17:01
mail     4981        10.6.0.28         Oct  1 10:54
mail     7724        10.6.0.32         Sep 14 11:40
mysql    10885       10.6.0.203        Jan 20 12:53
mysql    20441       10.21.28.58       Jun 22 21:14
mysql    39216       10.21.28.47       Oct  2 14:29
root     18122       10.6.0.32         Aug 30 14:36
root     2672        10.6.0.32         Sep 27 15:53
root     5961        10.6.0.32         Jun  6 09:38

b) 根据第 2 列字段排序。

[huey@huey-K42JE cmdline]$ sort -k 2 testfile 
mysql    10885       10.6.0.203        Jan 20 12:53
root     18122       10.6.0.32         Aug 30 14:36
mysql    20441       10.21.28.58       Jun 22 21:14
root     2672        10.6.0.32         Sep 27 15:53
mysql    39216       10.21.28.47       Oct  2 14:29
mail     4981        10.6.0.28         Oct  1 10:54
root     5961        10.6.0.32         Jun  6 09:38
admin    60327       10.6.0.203        Mar 11 23:03
mail     7724        10.6.0.32         Sep 14 11:40
admin    9917        10.6.0.32         Jan 16 17:01

c) 将第 2 列字段作为数字反向排序。

[huey@huey-K42JE cmdline]$ sort -k 2nr testfile 
admin    60327       10.6.0.203        Mar 11 23:03
mysql    39216       10.21.28.47       Oct  2 14:29
mysql    20441       10.21.28.58       Jun 22 21:14
root     18122       10.6.0.32         Aug 30 14:36
mysql    10885       10.6.0.203        Jan 20 12:53
admin    9917        10.6.0.32         Jan 16 17:01
mail     7724        10.6.0.32         Sep 14 11:40
root     5961        10.6.0.32         Jun  6 09:38
mail     4981        10.6.0.28         Oct  1 10:54
root     2672        10.6.0.32         Sep 27 15:53

 

posted on 2015-10-02 15:18  huey2672  阅读(1205)  评论(0编辑  收藏  举报