shuf - 入力行をランダムに表示する

shuf

shufコマンドとは、入力行をランダムに並び替えることができるコマンドです。
ランダムなデータは、プログラムの簡単なテストデータを作成するのに役立ちます。

shufコマンドとは

shufコマンドは、入力行をランダムに並び変えて表示します。
並び変えた結果は、入力と同じになる可能性もあります。
また、実行結果は実行するたびに異なります。

shufコマンドの構文

ファイルや標準入力から入力行をランダムに並び替える

入力文字列を入力行としてランダムに並び替える

ランダムに数字を並び替える(数字の範囲を指定)

shufコマンドの利用例

入力行をランダムに入れ替える
(オプションなし)

オプションがない場合は、ファイルまたは標準入力から行を読み取り、それらの行をランダムに出力します。
コマンド例

file.txt ▼表示

実行結果

引数から入力を受け取る
(-eオプション)

-eオプションを用いて、shufコマンドの引数に文字列を指定すると、その文字列を入力行として受け取ります。
そして、shufコマンドによって、入力行をランダムに並び替え、出力します。

コマンド例

実行結果

整数をランダムに並べる
(-iオプション)

-iオプションは、符号なし整数の範囲を指定することで、ランダムに整数を並べた出力を表示することができます。
ただし、数字の重複はありません。
数字を重複させるには、-rオプションと-nオプションを用います。
コマンド例

実行結果

ランダムに表示する行数を指定
(-nオプション)

-nオプションは、ランダムに表示する行数を指定することができます。
-rオプションがある場合、指定した数字の行数分を表示します
-rオプションがない場合で、入力行以上の数字が指定された場合に、出力は入力行分の行数になります。
コマンド例

実行結果

ランダムに表示する行に重複を許可
(-rオプション)

-rオプションは、ランダムに表示する行の出力が重複するようになります。
基本的に-nオプションと組み合わせて使用します。
-nオプションがない場合、無限ループになります。

コマンド例

実行結果

シードを指定
(--random-sourceオプション)

--random-sourceオプションは、ランダムデータのシードにファイルを選択することができます。
ランダムデータに再現性を持たせるために使用します。
コマンド例

file.txt ▼表示

実行結果

出力ファイルを指定
(-oオプション)

-oオプションは、ファイルを指定することでその出力結果を別のファイルに保存することができます。
また、shufコマンドは入力行をすべて読み取った後で出力を行うため、上書きする状況でもこのオプションは利用できます。
コマンド例

file.txt ▼表示

実行結果(file.txt)

参考

外部リンクGnu Coreutils

外部リンクGnu Coreutils日本語版