次の内容を含むファイルがある場合:
0001
0002
0003
0004
0132
0137
0138
0141
Bashでランダムな順列を取得するにはどうすればよいですか?
答え1
shuf
あなたが探しているコマンドです。
からman shuf
、
-n, --head-count=最大COUNT行からCOUNTを出力
たとえば、ファイルからランダムに4行を取得するには、次のようにします。
shuf -n 4 file
次の方法も使用できます。
head -$((${RANDOM} % `wc -l < file` + 1)) file | tail -1
このうち最後のパイプは、出力で必要な行数を指定します。
引用する
答え2
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