shuf 是一个 Unix/Linux 命令行工具,用于输出一组随机排列的行。它可以用来从文件中随机抽取行,也可以用来生成随机数。
基本语法:
shuf [OPTION]... [FILE]
如果不指定 FILE,则从标准输入读取数据。
如果指定了 FILE,则从该文件读取数据。
选项:
-n, --head-count=COUNT: 输出最多 COUNT 行。如果文件中的行数少于 COUNT,则输出所有行。
-r, --repeat: 重复输出行,直到达到 -n COUNT 的限制(如果没有 -n,则无限重复)。
-e, --echo: 将每个参数视为一行输入,而不是从文件或标准输入读取。
-i, --input-range=LO-HI: 指定一个整数范围 LO-HI,每行输出一个随机数。
-z, --zero-terminated: 以 NUL 字符代替换行符分隔输出的行。
--help: 显示帮助信息并退出。
--version: 显示版本信息并退出。
示例:
- 从文件中随机选择一行:
shuf file.txt
- 从文件中随机选择三行:
shuf -n 3 file.txt
- 从文件中随机选择五行,并允许重复:
shuf -nr 5 file.txt
- 将每个参数作为一行输入,并随机输出:
shuf -e "one" "two" "three"
- 生成 1 到 100 之间的五个随机数:
shuf -i 1-100 -n 5
- 生成 1 到 10 之间的随机数,并允许重复:
shuf -i 1-10 -nr 5
注意事项:
当使用 -r 或者 -n 时,如果不指定具体的数量,那么 -r 将默认输出文件中的所有行,而 -n 会输出一行。
-i 选项通常用于生成随机整数。