從m行的檔案隨機抽取n行(可以假定m>=n),這是需要對資料進行抽樣處理時很長常見的需求。
首先想到的方法是每讀取一行,扔乙個0到m-1的隨機數,如果隨機數小於n,則輸出該行,否則不輸出。perl源**如下:
#!/usr/bin/perl
# subset.pl
# usage: sub_set.pl file sample_num
if (@argv != 2) '`;
while (<$fh>) '`;
my %labels;
my $k = $sample_num;
for (my $i = 0; $i < $all_num; $i++) = 1;
$k--;
my $i = 0;
while (<$fh>) ) {
print ;
$i++;
這個程式可以嚴格地隨機輸出n行資料。
linux 隨機抽取檔案中N行
1.shell命令 直接用shuf n5 t.txt l則隨機在t.txt 中抽取5列 到l中 2.awkawk begin input file sort nk 1 head n line num awk f t 3.pythonimport random import linecache 乙個1...
從乙個檔案中隨機的選取700萬行資料
從乙個檔案中隨機的選取700萬行資料 encoding utf 8 import random from random import randint oldf open 0807.txt r newf open newfile.txt w n 0 resultlist random.sample r...
shell 隨機從檔案中抽取若干行
shuf n5 main.txt sort r main.txt head 5 awk vn 5 vc wc l file begin shuf 命令的選項 e,echo 將每個引數視為輸入行 i,input range lo hi 將lo 到hi 的每個數字視為輸入行 n,head count 行...