一、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) |