shufコマンド
shuf
はファイルやキーボードから入力した内容をシャッフル(shuffle)して出力するコマンドです。
乱数を扱う$RANDOM
コマンドとは異なり、同じものが2回出力されることはありません。
「1から10までの数字をランダムな順番で1回ずつ出力する」といった使い方も可能です。
基本的な使い方
パイプから入力を受け付けた要素(行)をシャッフル(ランダムに並べ替え)するという使い方になります。
seq 1 10 | shuf
10
3
7
1
6
9
5
2
8
4
出力する数を制限する
shuf -n N
で、シャッフルした各要素からN個のデータを抽出して出力させる事ができます。
$ seq 1 10 | shuf
7
6
4
5
10
2
1
3
8
9
$ seq 1 10 | shuf -n3
8
7
4
数値の幅を制限する
001から020までをランダムに出力してみます。
bash-5.1$ shuf -e {001..020}
006
002
016
011
018
009
008
005
017
014
004
013
010
015
019
007
003
001
012
020
bash-5.1$
さらにこの出力から5つに絞って出力します。
bash-5.1$ shuf -e {001..020}
006
002
016
011
018
009
008
005
017
014
004
013
010
015
019
007
003
001
012
020
bash-5.1$ shuf -e {001..020} -n5
018
011
008
006
020
bash-5.1$
- ヒント
- どんなときに使えばよいのかわかりませんが、いざというときのために(?)頭のすみっこにおいておいてください。