删除与另一个unix命令的输出匹配的行

时间:2015-11-19 09:52:38

标签: shell unix

我有一个文件如下

cat file
a 1 
a 2
b 3

我想删除1行和2行,因为它的第一列是相同的。

我尝试了cat file|uniq -f 1,即可获得所需的输出。但我想从文件中删除它。

1 个答案:

答案 0 :(得分:1)

 awk 'NR==FNR{a[$1]++;next}a[$1]==1{print}' file file

这种单线程可满足您的需求。无论您的文件是否已排序。

添加一些解释:

这个单行将处理文件两次,第一次记录(在哈希表中,键:第一列,值:出现)第一列的重复行,在第二列中,检查第一列是否哈希表有value==1,如果是,则打印。因为这些线是相对于col1的唯一线。