shuf
コマンドというのがあるのを最近知った.名前の通り,行をシャッフルして出力するコマンド.
$ shuf 1 2 3 4 5 ^D 3 2 4 5 1
はい.
ファイルの中からランダムな3件を取り出す
shuf hoge.txt | head -n3
便利.というかhead
使わないこともできて,普通はこちらでよさそう:
shuf -n3 hoge.txt
POSIX好きですか
ちなみにshufはPOSIX標準に入っていなくて,coreutilsに入っている.coreutilsはだいたいのディストリビューションに入っているので,そんなに困ることはなさそう.
POSIXが好きな人はsort -R
するとよさそう.ただし内容が同じ行は同じ場所になってしまう.これはこれで役立つかもしれない.
sort -R 1 1 2 2 3 4 5 ^D 1 1 # 同じ行になっている 4 2 2 # 同じ行になっている 5 3
引数をシャッフルする
-e
オプションをつけると引数をシャッフルして標準出力に吐き出す.
shuf -e a b c d e a e c d b
その他の使いそうなオプション
詳しくはman
見てね
-O
- 標準出力の代わりにファイルに書き出す
-r
- 行の重複を許容する