2014-02-27 36 views
3

我可以使用以下命令删除文件中的重复行: 1)sort -u和uniq命令。这可能使用sed或awk?如何在UNIX中删除文件中的重复行?

+2

,如果你有sort和uniq,你为什么要使用awk或者sed? – Skriptotajs

+0

嗯,可能是这样,因为两者都是完整的语言,据我所知。正如@Skriptotajs指出的那样,问题在于你会如何使用它们。 – Rubens

回答

9

有一个“著名的” AWK成语:

awk '!seen[$0]++' file 

它保持独特的线条在内存中,但它保留了文件顺序。

+0

这看起来很棒,但不知何故,它在macOS Sierra上不适合我。 – mherzl

+0

只适用于小文件,如果文件大一点然后内存+交换 - 没有工作 –

+0

对于一些“小”的定义。以GB测量 –

0

排序我们可以利用这个sed命令

sed -E '$!N; /^(.*)\n\1$/!P; D' filename 

如果该文件是未排序的,那么你可以用命令的组合后使用。

sort filename | sed -E '$!N; /^\(.*\)\n\1$/!P; D' 
0

排序和uniq这些只需要删除重复项 cat filename |排序| uniq的>>文件名2

如果文件包含的使用次数排序-n