2010-05-24 113 views
0

我有一個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

回答

1

如果你的操作系統有一個的/ 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

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

此副本從頭開始:

# (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

相關問題