在Linux系统中,shuf
是一个非常实用的命令行工具,用于随机打乱文件中的行或生成随机数。它的全称是 "shuffle"(洗牌),主要用于对数据进行随机排序。无论是在处理日志文件、生成随机密码还是进行数据采样时,shuf
都能提供强大的功能。
shuf
基本用法shuf [选项]... [文件]
如果没有指定文件,shuf
将从标准输入读取内容。
-n, --head-count=COUNT
:输出指定数量的行。-r, --repeat
:允许重复选择行。-z, --zero-terminated
:以空字符(NUL)而不是换行符结束每行。-e, --echo
:将参数作为输入项处理,而不是从文件或标准输入中读取。假设有一个名为 example.txt
的文件,内容如下:
apple
banana
cherry
date
elderberry
使用 shuf
打乱该文件中的行:
shuf example.txt
执行后,可能会得到类似以下的结果(每次执行结果可能不同):
banana
cherry
apple
elderberry
date
如果只想随机抽取3行,可以使用 -n
选项:
shuf -n 3 example.txt
例如输出可能是:
cherry
date
banana
shuf
还可以用来生成随机数。例如,生成1到10之间的随机数:
shuf -i 1-10 -n 5
这会输出5个不重复的随机数,例如:
7
3
9
1
5
如果希望生成的随机数可以重复,可以加上 -r
选项:
shuf -i 1-10 -n 5 -r
这可能会输出类似以下的结果(包含重复数字):
4
8
4
2
8
可以使用 -e
选项直接从命令行参数生成随机顺序:
shuf -e apple banana cherry date elderberry
输出可能是:
cherry
banana
elderberry
apple
date
shuf
可以用来随机抽取样本数据。shuf
可以用来生成随机密码。shuf
可以用来生成随机事件或选项。shuf
可能会占用较多内存,因为它需要将整个文件加载到内存中进行操作。-i
选项的范围必须是非负整数。