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选项合用,指定一个范围进行去重.
关于这两个命令就总结这么多,还是要多去敲敲,哪怕没有环境用,创造一个环境也用一下.
原文:http://blog.csdn.net/cp3alai/article/details/44246579