6 shell命令之sort,uniq

sort用来排序,uniq用来去重,这两个命令经常被结合在一起使用.主要就是因为uniq去重的前提是文本必须排好序才可以.

当然字面上面理解,这两个命令的确是这样的功能.但是其实不然,他们还有相关的其它能力.一起来看看.

sort [option] filename ...    对filename指定的文件进行排序相关的操作.

option常用的包括:

-b   忽略最前面的空格.

-c   检查是否已经排序,结果通过$?来查看

-n   按数字进行排序

-d   字典排序.

-M   月份排序

-h   排序人们所理解的单位.比如1K  小于   1G

-r   reverse   反序

-R   random   随机

-t   域分隔符

-k   关键字域

-o   输出,默认输出到stdout,如果指定了这个选项,则输出到文件中.

-u   排序后去除重复的行.

在上面这些选项中最常用的就是-b -n -t -k -r

看下效果:

1. 根据当前目录文件的大小排序:

技术分享

sort默认的分隔符是空格和tab键,所以在这里并不需要特别指定.

2. 指定输出文件.

技术分享

这也就是-o存在的意义.你可能想重定向到同一个文件中,但是那样的结果是你会死得很惨.数据会丢失.这种方式则不会.

3. 检查一个文件是否排好了

技术分享

4. 排序去重

技术分享

ok.基本上我也就用这么几个sort的功能.同学们在实际的应用中,要习惯去使用man.可能英文不是那么好理解,至少对我而言如此.不过我有自己的办法,就是我先去熟悉一个命令,等大致熟悉了以后,就可以理解英文的意思了.

通过第四个小例子,可以很容易联想到uniq,因为它同样可以完成这样的意图.

uniq [option] input output   uniq接受输出,把结果输出的标准输出.

常见的选项有:

-d   仅打印出重复的行

-u   仅打印不重复的行,与-d作用相反

-c    去重,并且加一个计数前缀.

-s n   跳过前n个字符.

-w n  仅比较指定的n个字符数,常和s选项合用,指定一个范围进行去重.


关于这两个命令就总结这么多,还是要多去敲敲,哪怕没有环境用,创造一个环境也用一下.

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。