使用sort和uniq对大文件中的行进行重复数据删除失败

时间:2019-04-30 15:55:31

标签: bash sorting duplicates large-files

我有一个大文件,每行包含JSON一行,共1563888行。为了重复删除此文件中的行,我一直在使用shell一线式sort myfile.json | uniq -u

对于较小的文件,此方法有效,并且sort myfile.json | uniq -u | wc -l大于0。由于正在运行的文件大小,sort myfile.json | uniq -u | wc -l会产生0行,而如果我使用head -n500000 myfile.json | sort | uniq -u | wc -l则有效。

bash是否有一种简单的方法来处理如此大的文件?还是有一种干净的方法将文件分块?我最初使用的是bash而不是Python,因为这似乎是一种更轻松的方法来快速验证事情,尽管现在我正在考虑将此任务移回Python。

1 个答案:

答案 0 :(得分:1)

根据Kamil Cuk,让我们尝试以下解决方案:

sort -u myfile.json 

文件真的是JSON吗?排序JSON文件可能导致可疑的结果。您也可以尝试按照Mark Setchell的建议拆分文件。然后,您可以对每个拆分文件进行排序,并对结果进行排序。各种处理都应使用sort -u

如果确实是JSON文件,请从myfile.json提供一些示例。仅在使用sort -u时,我们在这里介绍您的结果。