linux shuf命令----产生随机的排列

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
posted @ 2022-03-17 18:10  雨-铃  阅读(421)  评论(0编辑  收藏  举报
Tips
复制成功!