sort与uniq共舞
时间:2010-08-07 来源:init4
处理文本时常会碰到重复行、排序、统计等问题。这时,可以考虑sort和uniq这两个命令。sort对标准输入的文本进行行排序,uniq在读取行时会对他们进行比较并去除重复行。下面学习下常用的选项。
1 baidu
2 google
3 sina
4 sohu
5 qq
2 google
http://www.baidu.com/index.html
http://www.baidu.com/1.html
http://post.baidu.com/index.html
http://mp3.baidu.com/index.html
http://www.baidu.com/3.html
http://post.baidu.com/2.html
2 post.baidu.com
1 mp3.baidu.com
准备一个测试文本:
# cat list.txt
1 baidu
2 google
3 sina
2 google
4 sohu
5 qq
实现1.去除重复行
1 baidu
2 google
3 sina
4 sohu
5 qq
实现2. 去除交集,只取出不同的部分
#cat list.txt |sort|uniq -u
1 baidu
3 sina
4 sohu
5 qq
瞧,重复行google不见了。
实现3.取出相同行部分
#cat list.txt |sort|uniq -d2 google
接下来练练手,网上流传一道百度的面试题,如下:
处理以下文件内容,将域名取出并进行计数排序,如处理http://www.baidu.com/index.html
http://www.baidu.com/1.html
http://post.baidu.com/index.html
http://mp3.baidu.com/index.html
http://www.baidu.com/3.html
http://post.baidu.com/2.html
得到如下结果:
域名的出现的次数 域名
2 post.baidu.com
1 mp3.baidu.com
可以使用bash/perl/php/c任意一种
cat url.txt|awk -F/ '{print $3}'|sort -r|uniq -c|awk '{print $1"\t"$2}'
相关阅读 更多 +