【shuf】bash/シェルスクリプトマニアックコマンドあれこれ9

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$
ヒント
どんなときに使えばよいのかわかりませんが、いざというときのために(?)頭のすみっこにおいておいてください。

書籍の紹介

【comm】bash/シェルスクリプトマニアックコマンドあれこれ10

【comm】bash/シェルスクリプトマニアックコマンドあれこれ10

【numfmt】bash/シェルスクリプトマニアックコマンドあれこれ8

【numfmt】bash/シェルスクリプトマニアックコマンドあれこれ8