删除所有出现的重复行

ann*_*avt 5 sorting bash awk duplicates

如果我想删除某些字段重复的行,那么我使用 sort -u -kn,n。但这仍然发生一件事。如果我想删除所有出现的重复项,是否有任何快速的 bash 或 awk 方法可以做到这一点?

例如我有:

1   apple   30
2   banana   21
3   apple   9
4   mango   2
Run Code Online (Sandbox Code Playgroud)

我想:

2 banana   21
4 mango   2
Run Code Online (Sandbox Code Playgroud)

我将预排序,然后在 perl 中使用哈希,但对于大文件,这会很慢。

Jer*_*ock 2

尝试sort -k <your fields> | awk '{print $3, $1, $2}' | uniq -f2 -u | awk '{print $2, $3, $1}'删除所有重复的行(不保留任何副本)。如果您不需要最后一个字段,请将第一个awk命令更改为 just cut -f 1-5 -d ' ',将-f2in更改uniq-f1,然后删除第二个awk命令。