我正在处理包含以行分隔的数据的大型文本文件 (~20MB)。 大多数数据条目都是重复的,我想删除这些重复项以仅保留一个副本。
此外,为了使问题稍微复杂一些,一些条目会重复并附加一些额外的信息。在这种情况下,我需要保留包含额外信息的条目并删除旧版本。
例如 我需要从这个开始:
BOB 123 1DB JIM 456 3DB AX DAVE 789 1DB BOB 123 1DB JIM 456 3DB AX DAVE 789 1DB BOB 123 1DB EXTRA BITS对此:
JIM 456 3DB AX DAVE 789 1DB BOB 123 1DB EXTRA BITS注意。最终顺序无关紧要。
执行此操作的有效方法是什么?
我可以使用 awk、python 或任何标准的 linux 命令行工具。
谢谢。
最佳答案
下面的(在 Python 中)怎么样:
prev = None
for line in sorted(open('file')):
line = line.strip()
if prev is not None and not line.startswith(prev):
print prev
prev = line
if prev is not None:
print prev
如果您发现内存使用有问题,您可以使用 Unix sort
(即 disk-based)将排序作为预处理步骤进行,并更改脚本,使其不再读取整个文件到内存中。
关于python - 从 txt 文件中删除重复的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4948509/