首页 > 解决方案 > 大文件中的重复数据删除行因 sort 和 uniq 而失败

问题描述

我有一个大文件,其中每行包含一行 JSON,共 1563888 行。为了对这个文件中的行进行重复数据删除,我一直在使用 shell one-liner 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。

标签: bashsortingduplicateslarge-files

解决方案


按照 Kamil Cuk 的说法,让我们试试这个解决方案:

sort -u myfile.json 

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

如果确实是 JSON 文件,请提供来自 myfile.json 的一些示例。当您使用sort -u.


推荐阅读