从bash文件中获取一个随机数的字节?

问题描述:

我有一个256MB的文件。我想从该文件中检索随机数量的数据并将其复制到另一个文件。从bash文件中获取一个随机数的字节?

有没有办法以bash或其他方式做到这一点?

编辑:选择一个介于1和256之间的随机数,然后将该数量的MB从一个文件复制到另一个文件。

+0

你是什么意思,当你说“随机”?你在问如何生成一个随机数?或者你的意思是“任意”? – Cascabel 2010-05-24 16:34:36

+0

这是功课吗?有没有很多真正的原因做到这一点... – Cascabel 2010-05-24 16:45:16

+0

作业?哈哈,不。我在98年完成了大学学业。 – GeoffreyF67 2010-05-24 16:50:54

如果你的操作系统有一个的/ dev/urandom的,然后选择随机数很简单:

RANDNUM=`dd if=/dev/urandom bs=1 count=1 | od -t u1 | cut -f4- -d ' ' | head -1 | sed 's/ //g'` 

一旦你有一个随机数,

dd if=input_file of=output_file bs=${RANDNUM}m count=1 
+1

Bash有一个内建的RANDOM变量 – 2010-05-24 18:41:28

+0

@Jürgen:很高兴知道。我使用tcsh,据我所知,它不。 – nsayer 2010-05-24 18:58:19

cat somefile|head -c `head -c 3 /dev/random |hexdump -d|cut -f4 -d ' '|head -n1` 

此副本从头开始:

# (random) blocks of one byte 
dd of=output_file if=input_file ibs=1 count=$((($RANDOM % 256) + 1)M 

# one block of (random) bytes 
dd of=output_file if=input_file ibs=$((($RANDOM % 256) + 1)M count=1 

使用skip=选项从别的地方开始,如果你想。

(我的不好,忘了指定块的大小。)

+0

这是复制输入文件的全部内容。 – GeoffreyF67 2010-05-24 17:03:35

+0

需要指出的是'$ RANDOM'是Bash中的内建自动变量,它包含0-32767范围内的伪随机数。 – 2010-05-24 18:11:38