唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

ファイルからランダムにN行取り出す(shufコマンド)

Twitterで以下のようなやり取りを見かけて、cutコマンドなどはよく知らなかったので勉強になりました。

他にもっと簡単なやり方がないかなーと思って調べてみました。

sortコマンドの問題

"sort -R filename"は行のハッシュ値を元にソートしているため、まったく同じ行があった場合には連続してしまうみたいです。
たとえば以下のようなファイルをソートした時

0
0
1
1
2
2

以下のように同じ行はまとまって出力されます

1
1
2
2
0
0

shufコマンド

大抵の用途ではまったく同じ行も含めてランダムな順番になってほしいと思うので、そういう時はshufコマンドを使うとよいみたいです
"shuf filename"を使うと以下のようにまったく同じ行もバラバラに出力されます。

0
0
1
2
1
2

また"-n N"で出力する行数の指定もできるみたいです。
これを使うと冒頭で紹介した例のコマンドは以下のように短くできます。

まとめ

cutコマンドなどの文字列操作系のコマンドをほとんど利用してないので、もっと勉強しようと思いました。