bash - 大文件中的重复数据删除行因 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。
解决方案
按照 Kamil Cuk 的说法,让我们试试这个解决方案:
sort -u myfile.json
该文件真的是 JSON 吗?对 JSON 文件进行排序可能会导致可疑的结果。您也可以按照 Mark Setchell 的建议尝试拆分文件。然后,您可以对每个拆分文件进行排序,并对结果进行排序。各种都应该用sort -u
.
如果确实是 JSON 文件,请提供来自 myfile.json 的一些示例。当您使用sort -u
.
推荐阅读
- optimization - cvxpy 整数变量 - 从解决方案中排除某些整数值
- winforms - 在 Winforms 文本框中显示“Test-NetConnection”Powershell 命令
- javascript - 页面刷新后localStorage数组重置为空
- wpf - 用于动态更新的 WFP C# ListView 数据绑定
- firebase - 将图像从 Firebase 存储链接到 Firestore 文档并在 React Native 中显示它们
- php - 如何在foreach中只回显一次代码
- php - Nginx - 阻止除索引之外的所有 *.php 文件
- fabricjs - 是否可以使用复制文本的样式将粘贴文本从剪贴板复制到 IText
- swift - valueForUndefinedKey:]:这个类不符合键的键值编码
- python - 树莓派 4 上的激光雷达和伺服系统