shuf コマンドは、ファイルや標準入力の行をランダムに並べ替えて出力するためのコマンドです。
テストデータの作成や、ランダムなサンプリングを行うときに利用されます。
構文(Syntax)
shuf [オプション] [FILE]
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
-n N | 出力する行数を指定 | shuf -n 3 sample.txt |
-i LO-HI | 数値の範囲を指定してランダムに出力 | shuf -i 1-100 -n 5 |
-o FILE | 結果をファイルに保存 | shuf -o output.txt sample.txt |
-r | 行を繰り返して出力(リプレースあり) | shuf -i 1-10 -n 20 -r |
実行例
ファイルの行をランダムに並べ替え
# sample.txt
apple
banana
cherry
date
shuf sample.txt
出力例:
banana
apple
date
cherry
上位3行だけ取得
shuf -n 3 sample.txt
出力例:
date
banana
apple
数字1〜10をランダムに並べ替え
shuf -i 1-10
出力例:
7
3
10
1
5
...
数字1〜10から5つをランダム抽出
shuf -i 1-10 -n 5
出力例:
2
9
1
7
4
エラー例(存在しないファイルを指定)
shuf notfound.txt
出力例:
shuf: cannot open 'notfound.txt' for reading: No such file or directory
関連コマンド
sort: 行を昇順や降順に並べ替えるコマンド。head: ファイルの先頭部分を表示するコマンド。seq: 数値の連番を生成するコマンド。
備考
- GNU coreutils の一部として提供されます。
- BSD系(macOS など)には
shufが含まれていない場合があり、その場合はgshuf(coreutilsをインストール)を利用します。 - 大きなファイルに対しても効率的に処理できますが、メモリに依存するため非常に大きいデータでは注意が必要です。
参考
- manページ: https://man7.org/linux/man-pages/man1/shuf.1.html
- GNU Coreutils公式: https://www.gnu.org/software/coreutils/

コメント