Lambdaカクテル

集団への盲従を激しく嫌う

shufコマンド便利

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
    • 行の重複を許容する