首页 > 解决方案 > awk 删除具有多个重复列字段但在其他列字段中具有特定模式的行

问题描述

基本上,如果前 3 列具有相同的值,我想保留所有没有第四列值 =“-”的行。在这种情况下,我想删除第一行,但保留接下来的 2 行..

   A B C -
   A B C D1
   A B C D2
   AA BB CC D3
   AB BC CD D4
   FA FB FC -
   GA GB GC DN

预期输出:

   A B C D1
   A B C D2
   AA BB CC D3
   AB BC CD D4
   FA FB FC -
   GA GB GC DN

我能够了解

   awk '!(seen[$1,$2,$3]++  && $4 == "-")'

不删除任何行,但是如何修改条件以删除第一行?

我仍然想保留“FA FB FC -”,因为没有其他行的前 3 列为“FA FB FC”。

标签: awksed

解决方案


要删除第 4 个字段的行,-您可以简单地执行此操作。

awk 'FNR==NR{a[$1,$2,$3]++;next} a[$1,$2,$3]>1 && $4=="-"' Input_file Input_file

推荐阅读