[Linux-脚本]排序、统计、合并命令

时间:2021-05-18 22:08:55

1、排序命令 - sort:

sort可以帮我们进行排序,排序顺序按照LANG(语系环境变量)确定。据观察,sort排序以行为单位进行。排序以第一个不相同的字符决定先后顺序(只与第一个不相同的字符相关)。sort命令调用格式为:  sort [-fbMnrtuk] [file or stdin]

其具体选项解释为:

  • -f   : 忽略大小写的差异,例如 A 与 a 视为编码相同;
  • -b  : 忽略最前面的空格部分;
  • -M : 以月份的名字来排序。例如 JAN,DEC等的排序方法;
  • -n  : 使用“纯数字”进行排序(默认是以文字类型来排序的);
  • -r   : 反向排序;
  • -u  : 就是uniq,相同的数据中,仅出现一行代表;
  • -t   : 分隔符,默认使用[tab]键来分隔;
  • -k  : 以那个区间(field)来进行排序的意思。
  • 其它选项

sort的选项基本没多大用处,一般直接用sort就解决问题了。

2、统计-wc:

这个一个非常简单的命令,就是统计文件中的行数、单词数(统计空白字符)、字符数。

具体选项解释:

  • -l : 仅列出函数;
  • -w : 仅列出单词数(被空白字符分隔的东西,你如果愿意每个汉字间用空白字符分隔开,也可以统计出来);
  • -m : 仅列出字符数。
  • -c : 列出字节数

注意事项:

  • 不带选项调用wc会输出三个项,分别是行数、单词数、字符数,就相当于调用了-lwm;
  • 函数是统计行结束符的,如果最后一行没有行结束符则统计不出来(实测结果),事实上man给出的-l的解释是“列出new line的数目”;

3、排序后合并-uniq:

强调排序后合并是因为uniq只能在相邻行之间发生关系,所以一般得先用sort排序后才能发挥作用。uniq主要作用是把相邻的重复数据合并显示。

具体选项解释:

  • -i: 忽略大小写字符的不同;
  • -c : 合并的同时进行计数,计数值显示在行的最前面。