如果在不同的行中出现多个模式,则从文件中删除行

时间:2015-06-21 18:10:53

标签: shell awk sed file-processing

我的文件有这样的模式:

1 1 1 2 0 1 0.5
1 2 2 2 0 2 0.5
2 1 1 1 0 1 0.25
2 1 2 2 0 2 0.5
2 3 3 3 0 3 0.25

如果文件中的另一行具有相同的最后两个条目,我想删除一行。在上面的示例中,这意味着应删除第4行:

1 1 1 2 0 1 0.5
1 2 2 2 0 2 0.5
2 1 1 1 0 1 0.25
2 3 3 3 0 3 0.25

我无法通过命令行或简单的awk / sed脚本来了解如何做到这一点。非常感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

awk '!a[$NF,$(NF-1)]++' file

制作一个数组并检查它是否还没有填充最后两个字段。

答案 1 :(得分:1)

尝试:

 sort -k 6 f1.txt  | uniq -f 5

假设线条的原始顺序无关紧要。