Linux使用awk去掉重复值的几种情况

awk去掉重复的模式如下:

!a[$0]++

其中$0表示整行,$1表示第一列,$2表示第二列...

文件如下:

[root@fan102 test]# cat tt.txt 
蜀 打野 刘备
蜀 打野 刘备
蜀 打野 刘备
蜀 战士 关羽
蜀 射手 黄忠
魏 打野 曹操
魏 战士 典韦
魏 战士 夏侯惇
吴 法师 周瑜
吴 法师 小乔
吴 射手 孙尚香

1、去重第一列重复的行

取重复行的第一行输出

[root@fan102 test]# cat tt.txt | awk '!a[$1]++{print}'
蜀 打野 刘备
魏 打野 曹操
吴 法师 周瑜

2、去重以第一列和第二列重复的行

[root@fan102 test]# cat tt.txt | awk '!a[$1" "$2]++{print}'
蜀 打野 刘备
蜀 战士 关羽
蜀 射手 黄忠
魏 打野 曹操
魏 战士 典韦
吴 法师 周瑜
吴 射手 孙尚香

3、去除重复的行(整行重复)

[root@localhost cc]# cat tt.txt | awk '!a[$0]++{print}'
蜀 打野 刘备
蜀 战士 关羽
蜀 射手 黄忠
魏 打野 曹操
魏 战士 典韦
魏 战士 夏侯惇
吴 法师 周瑜
吴 法师 小乔
吴 射手 孙尚香

4、只显示重复行(不加 ! )

[root@fan02 test]# cat tt.txt | awk 'a[$0]++{print}'
蜀 打野 刘备

+++++++++++++++++++++++++++++++++++++++++
+         如有问题可+Q:1602701980 共同探讨           +
+++++++++++++++++++++++++++++++++++++++++

猜你喜欢

转载自blog.csdn.net/shenyuye/article/details/107725445