次の内容のファイルがある場合:
0001
0002
0003
0004
0132
0137
0138
0141
Bashでそれらのランダムな順列を取得するにはどうすればよいですか?
shuf
はあなたが探しているコマンドです。
man shuf
から
-n、-head-count =最大COUNT行のCOUNT出力
したがって、たとえばファイルから4つのランダムな行を取得するには、次のようにコマンドを使用できます。
shuf -n 4 file
以下のアプローチを使用することもできます。
head -$((${RANDOM} % `wc -l < file` + 1)) file | tail -1
ここで、最後のパイプからテールまでは、出力に必要な行数を指定します。
参照
これは、coreutilsのsort
で次のいずれかを使用して実行できます。
sort -R file
sort --random-sort file
sort --sort=random file
man sort
から:
-R, --random-sort
sort by random hash of keys
--sort=Word
sort according to Word: general-numeric -g, human-numeric -h, month
-M, numeric -n, random -R, version -V