如果我有一个包含以下内容的文件:
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 将指定输出中所需的行数。
参考
答案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