+ -
当前位置:首页 → 问答吧 → 查找指定列的非重复行

查找指定列的非重复行

时间:2011-01-27

来源:互联网

cat data1
1 2 3
1 2 3
1 2 4
1 2 5
1 2 6
2 2 6

查找第2列和第2列非重复的行。====注意不是去除重复,而是只过滤出只有一次的。


最后用uniq解决了。
uniq -f1 data1是去除重复的
1 2 3
1 2 4
1 2 5
1 2 6

加一个-u参数是查找非重复的。
[root@puppetserver225 ~]# uniq -f1 -u data1
1 2 4
1 2 5


但是uniq的-f参数不是很给力,不能隔列查找。
cat data2
1 2 3 r
1 2 3 r
1 2 4 1
1 2 5 1
1 2 6 y
2 2 6 t

用uniq -f1 -f4 -u data2啥都没查出来。只能用awk先过滤。。。。

能不用awk来一次搞定???

我用awk '{x=$2$3;if(!(x in a)){b[i++]=$0;}}END{for(i in b)print b[i];}' data1
结果没搞定。。。。。

作者: laohuanggua   发布时间: 2011-01-27

是你awk写错了吧  a数组死活没东西啊 那个if有啥子用啊

作者: lkk2003rty   发布时间: 2011-01-27

回复 lkk2003rty


多谢兔爷指点。明天改一下。。。。:lol:

作者: laohuanggua   发布时间: 2011-01-28