从INSANE BIG WORDLIST中删除重复项

时间:2018-09-03 15:35:42

标签: linux sorting debian uniq

做到这一点的最佳方法是什么?这是一个250GB的文本文件,每行1个单词

输入:

123
123
123
456
456
874
875
875
8923
8932
8923

想要的输出:

123
456
874
875
8923
8932

如果每条重复的行中有2条相同的行,我都希望获得1份副本,但都不要删除,只需删除1条,始终保留1条唯一的行即可。

我现在要做什么:

$ cat final.txt | sort | uniq > finalnoduplicates.txt

在屏幕上,这有效吗?我不知道,因为当我检查输出文件的大小时,它是0:

123user@instance-1:~$ ls -l
total 243898460
-rw-rw-r-- 1 123user 249751990933 Sep  3 13:59 final.txt
-rw-rw-r-- 1 123user            0 Sep  3 14:26 finalnoduplicates.txt
123user@instance-1:~$

但是当我检查运行此命令的屏幕的htop的cpu值是100%时。

我做错什么了吗?

1 个答案:

答案 0 :(得分:0)

您可以仅使用sort来完成此操作。

$ sort -u final.txt > finalnoduplicates.txt

您可以进一步简化此操作,只需sort完成所有操作即可:

$ sort -u final.txt -o finalnoduplicates.txt

最后,由于您的输入文件仅是数字数据,因此您可以通过sort开关告诉-n,以进一步提高此任务的整体性能:

$ sort -nu final.txt -o finalnoduplicates.txt
sort的手册页
   -n, --numeric-sort
          compare according to string numerical value

   -u, --unique
          with -c, check for strict ordering; without -c, output only the
          first of an equal run

   -o, --output=FILE
          write result to FILE instead of standard output