根据行中的值删除重复项

时间:2014-08-12 11:39:28

标签: unix awk

我有一个包含以下内容的文件

1,2,3,2
2,3,2,3
2,1,2
2,4,2,3,1

我必须根据一行删除重复项(在我的O / P中需要一次出现)并且我的o / p应该是

1,2,3
2,3
2,1
2,4,3,1

如果有任何方法可以使用awk或其他命令执行相同操作,请告诉我。

4 个答案:

答案 0 :(得分:0)

您正在寻找通用或任何特定解决方案。您可以使用Python

示例:

x = ["line1","line2","line3","line2","line1"]
y= list(set(x))
print (y)

output:
line3","line2","line1

答案 1 :(得分:0)

awk -F, '{s=""; delete a;
         for(x=1;x<=NF;x++){if(!($x in a))s=s sprintf("%s,",$x);a[$x]}
         sub(/,$/,"",s);print s}' file
1,2,3
2,3
2,1
2,4,3,1

答案 2 :(得分:0)

这很有意思。 这就是我的工作方式:

awk '{
  len=split($0,a,","); 
  for(i=1; i<=len; i++){ 
    prt = 1;
    for(j=i-1; j>0; j--){ 
      if (a[i]==a[j]){
        prt = 0;
        continue; 
      }
    }
    if (prt ==   1){
      printf a[i]",";
    }
  }
}' | sed 's/,$//'

答案 3 :(得分:0)

使用perl

会更容易
perl -F, -lane'my %seen; print join ",", grep { !$seen{$_}++ } @F' file
1,2,3
2,3
2,1
2,4,3,1

我们在,上拆分了一行并创建了一个数组@F。我们使用哈希%seen来填充数组grep中的数字,这些数字是唯一的。