第一部分:sort
sort:将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
常用参数:
参数 | 意义 |
-u | 在输出行中去除重复行 |
-r | sort默认排序是升序,加上-r即可降序输出 |
-o | 将排序后内容输出到指定文件 |
-n | 10与2的排序问题,即将内容按照数字排序 |
-t | 指定文件分隔符 |
-k | 指定排序列数 |
1.sort:(不带参数)
2.sort的-u选项
-u就是在输出行中去除重复行
3.sort的-r选项
sort默认的排序方式是升序,如果想改成降序,就加个-r就搞定了
4.sort的-o选项
由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > newfile。
但是,如果你想把排序结果输出到原文件中,用重定向可就不行了。
5.sort的-n选项
在比较数字时候,比如10与2,由于在排序中将这些数字按照字符来排序,排序时候会先比较1和2的大小,因为1比2小,所以10排在了2的前面,所以在数字排序时候要加-n,表示按照数字排序。
6.sort的-t和-k选项
我们上面的测试文件都只有一列,如果碰到文件有多列,且按照具体某一列排序时,就要考虑分隔符以及指定列数。
-t后面可以设定间隔符。
指定间隔符之后,-k可以指定排序列。
7.sort其他选项
-f 会将小写字母都转换为大写字母来进行比较,亦即忽略大小写
-c 会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1
-C 会检查文件是否已排好序,如果乱序,不输出内容,仅返回1
-M 会以月份来排序,比如JAN小于FEB等等
-b 会忽略每一行前面的所有空白部分,从第一个可见字符开始比较
8.-k选项详解
注:所有数字全部瞎编
8.1想要test5按照第三列排序,第三列相同的按照第二列降序排列
8.2想要从第一列第二个字母开始排序
我们使用了-k1.2,这就表示我们对第一个域的第二个字符开始到本域的最后一个字符为止的字符串进行排序。
9. -k和-u联合使用
由上可知,当按照-k2第二列排序时,baidu和sohu行第二列都为100,在-u中识别这两行为重复行,所以后面那一行被删除。
第二部分:uniq
uniq命令用于报告或者忽略文件中的重复的行,一般与sort命令结合使用。
1.uniq:(不使用参数)
uniq去除临近的相同项。
2.uniq和sort连用
3.uniq -c统计重复行出现的次数
uniq -d仅显示重复出现的行
uniq -u仅显示不重复的行
如上所示,ccc只有一行,没有重复出现过,所以-d之后没有打印出。
参考:https://www.cnblogs.com/ding2016/p/9668425.html
https://blog.csdn.net/pingD/article/details/78742471