Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29337140
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: LINUX

2010-04-10 21:52:26

文件经过处理后在它的输出文件中可能会出现重复的行。例如,使用cat命令将两个文件合并后,再使用sort命令进行排序,就可能出现重复行。这时可以使 用uniq命令将这些重复行从输出文件中删除,只留下每条记录的唯一样本。
笔记:确实如此我今天在合并了十多个文件之后发现就会存在重复的记录。
cat a >> b
cat c >> b
more b|sort     就会有重复的记录。


语法:
uniq [选项] 文件
说明:这个命令读取输入文件,并比较相邻的行[故而我们应当先对其做sort处理]。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后的结果写到输出文件中。输入文件和输出文件必须不同。如果输入文件用“- ”表示,则从标准输入读取。
该命令各选项含义如下:
- c 显示输出中,在每行行首加上本行在文件中出现的次数。它可取代- u和- d选项。
- d 只显示重复行。
- u 只显示文件中不重复的各行。
- n 前n个字段与每个字段前的空白一起被忽略。一个字段是一个非空格、非制表符的字符串,彼此由制表符和空格隔开(字段从0开始编号)。
+n 前n个字符被忽略,之前的字符被跳过(字符从0开始编号)。
- f n 与- n相同,这里n是字段数。
- s n 与+n相同,这里n是字符数。

笔记:可以使用uniq -u   表示只显示不重复的行!

示例一:
$ cat happybirthday.txt
Happy Birthday to You!
Happy Birthday to You!
Happy Birthday Dear Tux!
Happy Birthday to You!
$ sort happybirthday.txt
Happy Birthday Dear Tux!
Happy Birthday to You!
Happy Birthday to You!
Happy Birthday to You!
$ sort happybirthday.txt | uniq
Happy Birthday Dear Tux!
Happy Birthday to You!

如果您希望您的工作轻松点,比如只显示唯一的或重复的行,那么该怎么办呢?您可以用 -u (唯一)和
-d (重复)选项来做到这一点,例如:
$ sort happybirthday.txt | uniq -u 将不重复的行给显示出来!
Happy Birthday Dear Tux!
$ sort happybirthday.txt | uniq -d 将重复的行给显示出来!这样我就可以马上知道哪条记录重复
Happy Birthday to You!

笔记:如果你想使用uniq命令 得先做一下sort操作。然后再管道就行!





阅读(593) | 评论(0) | 转发(0) |
0

上一篇:nohup linux

下一篇:mysql优化where语句

给主人留下些什么吧!~~