我试图使用shuf
来洗牌文件,但时间太长;进程被宿主管理员终止。我有最便宜的Linux Bluehost计划。
shuf MMM.csv
文件有44m行,文件大小为7439641823字节,使用
sort -R
甚至更糟,考虑将文件拆分为44个文件,但这不是很随机的,任何想法都将非常感谢我要的是洗牌文件,然后提取前10000行
文件已排序,由于业务原因,10000行无法排序
最佳答案
关键是使用“shuf”和-n(“最多输出计数行”)选项。
比较:
$ time (seq 1 44000000 | shuf > /tmp/shuffled)
user 0m58.234s
sys 0m4.394s
$ time (seq 1 44000000 | shuf -n 10000 > /tmp/shuffled)
user 0m25.493s
sys 0m1.771s
(这些计时是在一台旧的2.53GHz Mac电脑上进行的。)
注意:在某些环境中,“shuf”可能可用作“gshuf”。