テキスト行のランダムな配列

テキスト行のランダムな配列

次の内容を含むファイルがある場合:

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

このうち最後のパイプは、出力で必要な行数を指定します。

引用する

https://stackoverflow.com/questions/448005/whats-an-easy-way-to-read-random-line-from-a-file-in-unix-command-line

答え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

関連情報