如何有效地对文件行进行随机排序(shuffle)?

时间:2013-08-06 17:07:20

标签: sorting

sort有一个--random-sort选项,但此选项会使sort明显变慢:

# time sort --random-sort input >/dev/null

real    0m7.247s
user    0m7.232s
sys     0m0.004s

没有--random-sort,速度提高了10倍:
input以前没有排序)

# time sort input >/dev/null

real    0m0.625s
user    0m0.616s
sys     0m0.008s

为什么这么慢?他们是一种有效地改变文件行的方法吗?

2 个答案:

答案 0 :(得分:3)

您可以尝试shuf。它应该更快,因为它专门用于工作。

答案 1 :(得分:0)

或者您可以尝试使用awk来选择文件中的随机行,例如(我不测试性能):

awk '{a[NR]=$0} 
     END{
         srand(); 
         for(j=0; j<100; j++) {
             i=int(rand()*NR+1);
             print a[i];
         }
     }'