如何删除文本文件中的重复行?

伊万

我的一个巨大的文本文件(最多2 GiB)包含其中每一行的大约100个精确重复项(对我而言,这是无用的,因为该文件是类似CSV的数据表)。

我需要的是在保持原始序列顺序的同时删除所有重复(最好是牺牲掉,但这可以显着提高性能)。结果,每一行都是唯一的。如果有100条相等的行(通常重复项分布在整个文件中,并且不会成为邻居),则只剩下其中一种。

我已经用Scala编写了一个程序(如果您不了解Scala,请考虑使用Java)来实现此目的。但是,也许有更快的C编写的本机工具能够更快地做到这一点?

更新:awk '!seen[$0]++' filename只要文件接近2 GiB或更小,解决方案对我来说似乎就很好,但是现在我要清理8 GiB文件就不再起作用了。在配备4 GiB RAM和配备4 GiB RAM和6 GiB交换功能的64位Windows 7 PC的Mac上,似乎占用了无限空间。鉴于这种经验,我对在具有4 GiB RAM的Linux上尝试它并不感到热心。

恩佐替布

awk在#bash(Freenode)上看到解决方案:

awk '!seen[$0]++' filename

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章