使用 sort 和 uniq 删除大文件中的重复行失败
Deduplicating lines in large file fails with sort and uniq
我有一个大文件,其中包含一行 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。
根据 Kamil Cuk,让我们试试这个解决方案:
sort -u myfile.json
文件真的是JSON吗?对 JSON 文件进行排序可能会导致可疑的结果。您也可以按照 Mark Setchell 的建议尝试拆分文件。然后您可以对每个拆分文件进行排序,并对结果进行排序。所有种类都应该用 sort -u
.
来完成
如果确实是 JSON 文件,请提供 myfile.json 中的一些示例。让我们在这里谈谈您使用 sort -u
.
时的结果
我有一个大文件,其中包含一行 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。
根据 Kamil Cuk,让我们试试这个解决方案:
sort -u myfile.json
文件真的是JSON吗?对 JSON 文件进行排序可能会导致可疑的结果。您也可以按照 Mark Setchell 的建议尝试拆分文件。然后您可以对每个拆分文件进行排序,并对结果进行排序。所有种类都应该用 sort -u
.
如果确实是 JSON 文件,请提供 myfile.json 中的一些示例。让我们在这里谈谈您使用 sort -u
.