Linux Sort & Uniq

这两个命令的含义不解释了,直接上例子。

uniq篇

[oracle@odilab ~]$ sort 1.txt | uniq
aa
bb
cc
uniq命令的输入必须是有序的。

[oracle@odilab ~]$ sort 1.txt | uniq -c
      2 aa
      2 bb
      1 cc
输出重复次数

[oracle@odilab ~]$ sort 1.txt | uniq -d
aa
bb
只输出有重复的记录

[oracle@odilab ~]$ sort 1.txt | uniq -u
cc
只输出不重复的记录

sort篇

[oracle@odilab ~]$ sort 1.txt
1
10
2
[oracle@odilab ~]$ sort -n 1.txt
1
2
10

-n: 按照字符串的数值大小排序。默认从小到大排序。

[oracle@odilab ~]$ cat 1.txt
z
a
ab
c
a
[oracle@odilab ~]$ sort -r 1.txt
z
c
ab
a
a
[oracle@odilab ~]$ sort -ru 1.txt
z
c
ab
a
-r: 逆序排序  -u : distinct操作。可以看到有一个a消失了。
[oracle@odilab ~]$ sort 1.txt
1
a
a
ab
c
C
z
可以看到顺序为:数字<字母,同字符小写字母<同字符大写字母<靠后字母。

多个域的文件排序,sort默认以第一个域为准排序。

[oracle@odilab ~]$ sort -k2 1.txt
z 1
a a
a a
ab ab
c c
C C
1 Z
-k: 指定按照第几个域排序

[oracle@odilab ~]$ sort -t"," -k2 1.txt
z,1
a,a
a,a
ab,ab
c,c
C,C
1,Z
-t 指定域分隔符

输出到文件

[oracle@odilab ~]$ sort -k2 -o2.txt 1.txt
[oracle@odilab ~]$ cat 2.txt
z 1
a a
a a
ab ab
c c
C C
1 Z
[oracle@odilab ~]$ sort -k2 1.txt > 2.txt
[oracle@odilab ~]$ cat 2.txt
z 1
a a
a a
ab ab
c c
C C
1 Z
-o: 指定输出文件。也可以用>重定向符实现同意功能。

Sort命令采用的算法:External R-Way merge sort (根据stakoverflow.com)。将数据分区,对每个分区排序,最后将每个分区合并得到结果。性能比较稳定。是divide-and-conquer思想的提现。

-S:指定内存缓冲区。缓冲区越大,容纳的分区越多。

[oracle@odilab ~]-rw-r--r--   1 oracle oinstall 4.7M Jan  9 10:19 2.txt
[oracle@odilab ~]$ wc -l 2.txt
1000001 2.txt
[oracle@odilab ~]$ head -2 2.txt
560
525
$ date
Thu Jan  9 10:20:43 EST 2014
[oracle@odilab ~]$ sort -S64K 2.txt > null
[oracle@odilab ~]$ date
Thu Jan  9 10:21:03 EST 2014
[oracle@odilab ~]$ sort -S2M 2.txt > null
[oracle@odilab ~]$ date
Thu Jan  9 10:21:16 EST 2014
date命令是手敲的,不能精确反应sort命令的执行时间。但是能体会到缓冲区2M时,快很多。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值