评论

收藏

[Linux] shuf -- 产生随机的排列

服务系统 服务系统 发布于:2022-09-01 11:13 | 阅读数:286 | 评论:0

shuf -- 产生随机的排列
随机生成10次抛硬币结果
[user@master]
$ shuf 
-r 
-n 
10 
-e 
'正面' 
'反面'
 
正面
 
反面
 
正面
 
反面
 
反面
 
反面
 
正面
 
反面
 
反面
 
正面
主要用途

  • 将输入的内容随机排列并输出。
  • 当没有文件或文件为-时,读取标准输入。
选项
-e       将每个 ARG 视为输入行
 
-i       将数字范围 LO (最低)到 HI (最高)之间的数字作为输入行
 
-n       只输出前 COUNT 行
 
-o       将结果写入到文件而不是标准输出
 
-r       输出行可以重复
 
-z       行终止符为 NUL (空字符) 而不是默认的换行符
参数
FILE (可选): 要处理的文件,可以为任意数量,以空格分隔。
ARG (可选): 作为输入行的字符串,可以为任意数量,以空格分隔。
返回值
返回0标识成功,返回非0标识失败。
例子
使用-e标志传入输入。
[user@master]
$ shuf 
-e Monday Tuesday Wednesday Thursday Friday Saturday Sunday    
 
Monday
 
Wednesday
 
Thursday
 
Saturday
 
Sunday
 
Tuesday
 
Friday
使用-i标志。
[user@master]
$ shuf 
-i 
1
-10
 
6
 
3
 
7
 
8
 
5
 
4
 
9
 
2
 
10
 
1
使用-n标志。
[user@master]
$ shuf 
-n 
5 
-i 
1
-10
 
1
 
10
 
3
 
5
 
7
使用-o参数。
如果指定的文件不存在,则会自动创建文件并写入结果

如果指定的文件已经存在,则会先清空内容,再写入结果
[user@master]
$ shuf 
-i 
1
-10 
-o result.txt
 
[user@master]
$ cat result.txt
 
1
 
9
 
3
 
7
 
6
 
4
 
5
 
8
 
2
 
10
使用-r标志。
[user@master]
$ shuf 
-n 
10 
-e a b c d
 
d
 
a
 
c
 
b
 
[user@master]
$ shuf 
-r 
-n 
10 
-e a b c d
 
a
 
a
 
a
 
d
 
d
 
d
 
a
 
b
 
d
 
b
使用-z标志。
全部输出都在同一行
[user@master]
$ shuf 
-r 
-z 
-n 
10 
-e a b c d
 
cbbbadbcbc
其他:
[user@master]
$ shuf 
-i 
1
-100 
-n 
5 && shuf 
-i 
200
-300 
-n 
5          
 
96
 
11
 
34
 
2
 
29
 
273
 
208
 
278
 
257
 
271
 
[user@master]
$ shuf 
-i 
1
-100 
-n 
5 | 
sort 
-n && shuf 
-i 
200
-300 
-n 
5 | 
sort 
-n
 
30
 
33
 
40
 
47
 
63
 
208
 
221
 
245
 
268
 
269