awk '!a[$1" "$2]++{print}' text.txt
原理
- ”!” 非
- a[$0],以$0为数据下标,建立数组a
- a[$0]++,即给数组a赋值,a[$0]+=1
转载:
这样子就能将文件里重复的东西打印出来,$1取决于重复的列,如果是第二列就是$2。那为什么要这么写呢?
我们知道如果awk的表达式为0则不会打印,非0则打印,这个可以这样试试 awk ‘0’ yourfile,这样是不会打印的。好了回到这个a[$1],这是一个数组,一个以$1为下标的数组,假设我们$1分别是a b c d e,这些字母,当第一个为a[a]的时候,值是0,awk打印出$1,然后处理下一个$1 . 因为awk里面没定义的变量初值都是0,然后++,这时候变成1,如果后续没有a的出现,那就是说a[a]一直都是1,但如果有a出现,则a[a]还会增加,这时候是非0值,因为前面的!的取反作用,本来需要打印的现在不需要打印了。
所以这个命令会输出文件里面所有不重复的数据,重复的数据也只输出一次。