Linux shell怎么从20W数据中随机的抽取2W?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux shell怎么从20W数据中随机的抽取2W?相关的知识,希望对你有一定的参考价值。

我有一个文本文件包含20W行数据,我想随机抽取其中的2W,请问该怎么写命令呢。。

#!/bin/bash
sort -R a.txt | head -20000
##
sort随机排序,然后取前20000,实现出来就是随机抽取20000.追问

sort -R,好像木有 -R 这个选项,只有-r,而且-r只是按照降序排列吧

追答

sort肯定有-R选项啊!你的没有那可能是系统版本的问题,少了什么东西。
更新升级一下你的coreutils包

参考技术A #!/bin/bash
# 这个脚本相对有点耗时,专为你的这种不支持sort -R的机子使用

> outfile
for ((i=0;i<20000;i++))
do
rownum=`cat /dev/urandom | tr -dc '0-9' | fold -w 6 | head -n 1`
let "rownum = rownum % 20000 + 1"
cat a.txt | sed -n "$rownump" >> outfile
done本回答被提问者和网友采纳
参考技术B head -n 20000 file.txt >> xxx.xxx
不过是 前2W行
参考技术C 你用下$RANDOM吧

在c#中随机抽取数据库中数据且不重复怎么实现SQL语句

这个没必要用一条sql语句来实现,可以采用变通的办法,你在C#程序中定义一个list,每次从数据库中随机抽取一条数据后将这条数据的id放入list中,下次随机抽取数据后去判断这条数据的id是否在list中,如果在则说明重复了,丢弃这条数据重新再取,这可能会有一定的效率损失,但是随机数重复的可能性本来就很小,这点效率损失没什么大不了的。 参考技术A select * from tablename order by newid()追问

这样可以随机抽题,但是会有重复的情况发生,怎么解决啊

参考技术B 建个临时表咯
抽了的不选

以上是关于Linux shell怎么从20W数据中随机的抽取2W?的主要内容,如果未能解决你的问题,请参考以下文章

C语言中,怎么从0~9中随机抽取4个不同的数字

shell 脚本 随机抽取班上学生

Oracle 中实现随机抽取数据

在c#中随机抽取数据库中数据且不重复怎么实现SQL语句

python中怎么从一个列表中可重复的随机抽取元素构成新列表?

从数据集中随机抽取一定数量的数据