ファイルからランダムに行を抽出して表示したい
- お題 : 「f.txt から、ランダムに 20 行抜き出し、表示する」
bash の場合
l=`wc -l f.txt | awk '{print $1}'` i=1 while [ $i -le 20 ] do idx=$((RANDOM%l)) cat f.txt | head -$idx | tail -1 i=$((i+1)) done
尚、RANDOM 変数ですが、上限 32767 なので、それ以上の行数がファイルにある場合は注意。以下 Mac での man bash より。
RANDOM Each time this parameter is referenced, a random integer between 0 and 32767 is generated. The sequence of ran- dom numbers may be initialized by assigning a value to RANDOM. If RANDOM is unset, it loses its special proper- ties, even if it is subsequently reset.
python の場合
http://www.python.jp/doc/release/lib/module-random.html より、sample 関数を利用。
import random f=open("f.txt","r") l=f.readlines() s=random.sample(l,20) print "".join(s)