文本行的随机排列

文本行的随机排列

如果我有一个包含以下内容的文件:

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

其中,最后一个管道到 tail 将指定输出中所需的行数。

参考

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

相关内容