网上看到的一道题,不知道愿意是不是让用shell来做。 老实说,我也不知道这样写速度是否真的会快一点。没有这样的数据来测试。

# 有一千万条短信,有重复,以文本文件的形式保存,一行一条,有重复。
# 请用5分钟时间,找出重复出现最多的前10条

set -x

# 拆分为10000行一个的文件。
split msg_file -l 10000

for i in x*;do
    sort $i | tail -10 > ${i}_tmp &
done

sleep 5 # Wait for the sort
cat x*_tmp | sort | tail -10 > out.txt

rm x*_tmp
rm x*