【发布时间】:2019-09-19 08:06:59
【问题描述】:
我有一个大文件,其中每行包含一行 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。
【问题讨论】:
-
应该没问题。你确定你没有收到任何错误吗?是否有任何程序以非零状态退出?
-
Due to the file sizeproduces 0 lines不可能。这很难相信。它应该工作很长时间,或者至少应该抛出一个错误(很可能是“内存不足”)。顺便提一句。sort -u比sort | uniq -u更短(因此内存消耗更少)。
标签: bash sorting duplicates large-files