AWK删除字段1,...,n中具有相同值的行,但n + 1字段的值不同,除非它们是唯一的

时间:2016-10-01 00:05:45

标签: awk

我有file1.tsv,如下所示:

1    ABC    10    XYZ    Null    Null
1    ABC    10    XYZ    1000    FFGG
1    ABC    10    XYZ    1001    FFHH
2    DEF    11    UVW    Null    Null
3    GHI    30    RST    Null    Null
3    GHI    30    RST    1002    JJKK
3    GHI    30    RST    1003    JJLL

我希望awk打印到file2.tsv输出:

1    ABC    10    XYZ    1000    FFGG
1    ABC    10    XYZ    1001    FFHH
2    DEF    11    UVW    Null    Null
3    GHI    30    RST    1002    JJKK
3    GHI    30    RST    1003    JJLL

也就是说,删除(不打印)第1行和第5行,因为它们不是唯一的,仅仅是字段$1-$4的值,而是因为$5="Null"$6="Null"

提前致谢。

1 个答案:

答案 0 :(得分:1)

不要打印ABC或GHI与Null匹配的行。

awk' / ABC | GHI /〜!/ Null /'文件

1    ABC    10    XYZ    1000    FFGG
1    ABC    10    XYZ    1001    FFHH
2    DEF    11    UVW    Null    Null
3    GHI    30    RST    1002    JJKK
3    GHI    30    RST    1003    JJLL