2016-03-31 21 views
0

我正在處理一個〜0.5 GB的文本文件,並且我想提取一行代表性的子集。比方說,百萬分之一。我已經創建一個小的腳本來做到這一點:如何從大文本文件中隨機採樣行 - 從命令行

import random 
result = [] 
with open("data.txt") as f: 
    for line in f: 
     if random.random() < 0.000001: 
      result.append(line) 

但是這將是我的目的更多的有用的,如果我能做到這一點的命令行,沒有劇本。請注意,我不在乎有多少行輸出,我只是希望能夠設置輸出每行的百分比/概率。

我的問題/請求:是如何做到這一點只是一個簡短的適合命令行的單線程。

+0

基於awk' Simpe'解決方案... http://stackoverflow.com/a/22303906/2836621 –

+0

涼爽。更短! – user6138212

回答

0

perl ok?試試這個:

cat yourfile.txt | perl -ne 'print if (rand() < 0.000001)' 
+1

無用的'貓'。 'perl -ne'print rand()<0.000001' cdarke

+1

我使用貓顯示它,假設原始海報想要在一系列管道中使用它,例如貓| ... |排序| ... 等等。另外,開始使用貓通常會很有幫助,因爲它將文件名放在左側。 –