先对文件按行split
split -l 100000000 file #以一亿行分割,每行10个字符的文件,大约800M
然后sort
#!/bin/shfor file in `ls x*`do sort $file -T /home/xxx > $file.sort ##重点在这的-T设置tmp参数,sort是会写缓存文件的工具,不会##一次性读取文件到内存,所以内存大小无所谓,但是默认会写系统区,可能造成系统区空间不够##所以找个比较大的地方放donesort -m `ls *.sort` > result
其实直接sort也是可以的,有-T就行了对付上G的文件没问题,会跑满cpu但是内存占用只有0.几
sort之后的文件可以直接uniq,uniq的速度是极其快的,一亿行的文件sort需时40分钟,uniq只需不到2分钟