Chinaunix首页 | 论坛 | 博客
  • 博客访问: 117598
  • 博文数量: 41
  • 博客积分: 1782
  • 博客等级: 上尉
  • 技术积分: 387
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-21 13:35
文章分类

全部博文(41)

文章存档

2014年(7)

2013年(3)

2012年(5)

2011年(10)

2010年(16)

分类: LINUX

2010-12-23 12:50:58

一、uniq (删除重复行)
注意事项:
1、默认只保留重复内容的第一行
2、这些行必须是相邻的行才会被删除
3、要删除不相邻的重复行,必须进行排序
4、默认整行进行比较,除非特别指定
5、uniq还可以比较特定字段、字符的选项
6、无论是比较行、字段、字符,都只能比较到行尾的内容,行中间的一个域是不可能的
===================================================================
uniq命令共有三个选项:输出格式、忽略前导字段、忽略前导字符

输出格式有四种:非重复行和重复行的第一行(默认)
              "-u"只输出唯一的行
              “-d”只有重复行
              “-c”显示重复行的重复数

# cat test1 
asdfsfasdf
asdfsfasdf
asdfsfasdf
asdfsfasdf123
asdfsfasdf12
asdfsfasdf12
asdfsfasdf123

#uniq test1
asdfsfasdf
asdfsfasdf123
asdfsfasdf12
asdfsfasdf123

#uniq -u test1 
asdfsfasdf123
asdfsfasdf123
注意:因为这两行在test1中是不相邻的

#uniq -d test1 
asdfsfasdf
asdfsfasdf12

# uniq -c test1 
      3 asdfsfasdf
      1 asdfsfasdf123
      2 asdfsfasdf12
      1 asdfsfasdf123
===========================================
忽略前导字符:
# cat test1
asd fsf1 asdf
asd fsf2 asdf
asd fsf3 asdf
asd fsf asdf 123
asd fsf asdf12
asd fsf asdf12
asd fsf asdf 123

# uniq -d -f 2  test1 
asd fsf1 asdf
asd fsf asdf12
注意:忽略字段选项(-f)跳过指定的字段数目(以行首位置开始计算)以及它们之前的空格
字段呗定义为一个由空格或制表符分隔的ASCII字符集
两个连续的空格是两个字段
//在上面的例子中"-f 2"是指跳过asd  fsf1以asdf字段进行比对
=======================================================================
#cat test1
asd fsf1 asdf
asd fsf2 asdf
asd fsf3 asdf
asd fsf asdf 123
asd1 fsf asdf12
asd2 fsf asdf12
asd fsf asdf 123

#uniq -d -s 4  test1 
asd1 fsf asdf12
//参数"-s"忽略前导字符,在上面的例子中,“-s 4”忽略了asd1/asd2比对后面的,所以
asd1 fsf asdf12
asd2 fsf asdf12
对比以后成重复行



阅读(510) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~