linux - 如何从 4400 万行文件中随机选择 1 万行

标签 linux bash perl sorting awk

我尝试使用 shuf 来随机播放文件,但它花费的时间太长;该进程被托管管理员终止。我有最便宜的 Linux Bluehost 计划。

shuf MMM.csv

文件有44M行,文件大小为7439641823字节,使用sort -R更糟,考虑将文件拆分成44个文件,但不会很随机,任何想法都会非常感谢

我想要的是打乱文件,然后提取前 10000 行

文件已排序,由于业务原因,10000行无法排序

最佳答案

关键是使用带有 -n(“最多输出 COUNT 行”)选项的“shuf”。

比较:

$ 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”。

关于linux - 如何从 4400 万行文件中随机选择 1 万行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34951311/

相关文章:

linux - 关闭终端后无法在 Ubuntu 下运行 Swift

linux - 不要在日志中打印

用于在脚本中设置 SHELLOPTS 的 Bash 子shell

linux - 在 Bash while 循环中使用 "and"

c - 简单的缓冲区溢出漏洞利用 shellcode 不起作用

linux - 如何找到PPP接口(interface)的默认网关?

python - 从脚本 python 获取变量环境的变化

git - 我应该使用 `sh -c\"...\"` 还是 `"!f() {... ; }; f"在 git 别名脚本中?

regex - 在 Perl 中的变量中用反斜杠替换文本

python - Windows cookies index.dat 解析器