只保留bash中的第一个重复条目

时间:2014-06-14 07:05:29

标签: bash awk

这是我的数据结构:

First   A   1385
First   B   8364
First   C   9734
First   C   9625
Second  A   3566
Second  B   9625
Second  B   0238

我要删除重复的行条目(第1列和第2列中的信息)并保留第一次出现的内容 我想删除First C 9625Second B 0238,因为它们是First CSecond B的第二次出现,结果如下:

First   A   1385
First   B   8364
First   C   9734
Second  A   3566
Second  B   9625

我尝试了什么:

awk '{print $1"\t"$2}' FILE  | 
   sort -u | 
   while read LINE; do 
      echo $LINE | 
      tr ' ' '\t' | 
      grep -m1 -F -f - FILE
   done

我只是在学习bash编码,我的解决方案非常笨拙。我相信可以在一个bash命令中执行我想要的操作。

1 个答案:

答案 0 :(得分:3)

$ awk '!seen[$1,$2]++' file
First   A   1385
First   B   8364
First   C   9734
Second  A   3566
Second  B   9625

以下是您在字段之间需要,的原因:

$ cat file
ab c
a  bc
$
$ awk '!seen[$1,$2]++' file
ab c
a  bc
$ awk '!seen[$1$2]++' file
ab c