2016-03-31 20 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) 

をしかし、私はスクリプトなしで、コマンドラインからこれを行うことができれば、それは私の目的のために、より有用であろう。注意しておきますが、どれだけの出力を出力するかは気にしません。各出力の割合/確率を設定したいだけです。

ご質問/ご要望:コマンドラインに適した短い1本のライナーでこれを行う方法です。

+0

Simpe 'awk'ベースのソリューション... http://stackoverflow.com/a/22303906/2836621 –

+0

:これを試してみてください。さらに短く! – user6138212

答えて

0

perlですか?クール

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

'cat'を使いません。 'perl -ne 'rand()<0.000001' cdarke

+1

元のポスターがパイプの列にこれを使用したいと仮定して、catを使用して表示しました。猫| ... |並べ替え| ... 等々。また、ファイル名が左側になるので、猫で始めることはしばしば役に立ちます。 –

関連する問題