GNU Core Utilities/shuf
表示
shuf コマンドは、入力の行をランダムに並び替えたり、一部をランダムに抽出したりするためのコマンドです。主にテキスト処理やスクリプト内でのランダム化に使用されます。
基本的な使い方
[編集]shuf [オプション] [ファイル]
または、標準入力から
command | shuf
主なオプション
[編集]主なオプション オプション 説明 -o FILE結果を指定したファイルに出力 -n N指定した N行のみをランダムに抽出-e引数として与えた項目をランダムに並べ替え -i LO-HILOからHIまでの整数をランダムに並べ替え--random-source=FILE指定したファイルから乱数を取得 -r同じ要素を複数回出力(リピートモード)
例
[編集]ファイルの行をランダムに並び替え
[編集]shuf input.txt
input.txt の内容をランダムに並べ替えて表示。
標準入力の行をランダムに並び替え
[編集]cat input.txt | shuf
または
ls | shuf
ファイル一覧をランダムに並び替え。
ランダムな行を 5 行だけ取得
[編集]shuf -n 5 input.txt
input.txt からランダムに 5 行選択。
数値の範囲(1〜10)をランダムに並び替え
[編集]shuf -i 1-10
1 から 10 までの整数をランダムな順番で出力。
コマンドライン引数をランダムに並べ替え
[編集]shuf -e apple banana cherry
apple, banana, cherry の順番をランダム化。
ファイルを並び替えて別のファイルに保存
[編集]shuf input.txt -o output.txt
input.txt の内容をシャッフルし、output.txt に保存。
重複ありでランダム出力(リピートモード)
[編集]shuf -r -n 5 -i 1-10
1〜10 の範囲で、重複あり の 5 つの数値をランダムに出力。
FreeBSD での代替手段
[編集]FreeBSD には shuf コマンドがデフォルトで含まれていません。その代わりに jot, sort, awk などを使うことができます。
sort の -R オプションを使う
[編集]sort -R input.txt
(sort -R は GNU sort に依存するため、FreeBSD では gsort を使う必要がある場合がある)
jot + sh
[編集]jot -r 5 1 10
1 から 10 までのランダムな数値を 5 つ生成。
awk を使う
[編集]awk 'BEGIN { srand(); while (getline) a[++n]=$0; for (i=n; i>0; i--) { j=int(rand()*i)+1; print a[j]; a[j]=a[i]; } }' input.txt
(これは shuf の動作を awk で再現するスクリプト)
まとめ
[編集]- ✅ Linux(GNU coreutils) では
shufを使用。 - ✅ FreeBSD では
shufなし →sort -R,jot -r,awkを利用。 - 🎯 用途: リストの並び替え、ランダム選択、数値のシャッフル。