我有一个非常大的数据文件(255G; 3,192,563,934行)。不幸的是,我在设备上只有204G的可用空间(我没有其他设备可以使用)。我做了一个随机样本,发现在一个给定的,比如说100K的行中,大约有10K个唯一的行...但文件没有排序。
通常我会用,比如说:
pv myfile.data | sort | uniq > myfile.data.uniq
让它运行一天左右。在这种情况下,这不会起作用,因为我在设备上没有足够的空间来存放临时文件。
我原本以为我可以使用split
,并且可以在一个新文件中一次在500K行上进行流uniq
。有没有办法做这样的事情?
我以为我可能会做类似
的事情tail -100000 myfile.data | sort | uniq >> myfile.uniq && trunc --magicstuff myfile.data
但我无法找到正确截断文件的方法。
答案 0 :(得分:4)
使用def do_something
# some code, then...
object_b = ClassB.new(params)
end
代替sort -u
这允许sort | uniq
更早地丢弃重复项,而GNU coreutils足够聪明,可以利用这一点。