如何随机化seq的输出?

ber*_*436 11 command-line seq

我知道我可以seq用来生成一个随机的数字列表:1, 2, 3, 4 ...

我想把这些数字变成一个随机的顺序,比如 3、1、4、2……

我知道我可以shuf用来打乱文件的行。所以我可以seq用来将随机数写入一个文件,然后用来shuf对它们进行混洗——或者编写某种混洗函数。但这似乎不必要地复杂。有没有更简单的方法来使用单个命令随机化数组中的项目?

slm*_*slm 17

您可以将输出通过管道传输到shuf.

$ seq 100 | shuf
Run Code Online (Sandbox Code Playgroud)

例子

$ seq 10 | shuf
2
6
4
8
1
3
10
7
9
5
Run Code Online (Sandbox Code Playgroud)

如果您希望输出是水平的,则将其通过管道传输到paste.

$ seq 10 | shuf | paste - -s -d ' '
1 6 9 3 8 4 10 7 2 5 

$ seq 10 | shuf | paste - -s -d ' '
7 4 6 1 8 3 10 5 9 2 

$ seq 10 | shuf | paste - -s -d ' '
9 8 3 6 1 2 10 4 7 5 
Run Code Online (Sandbox Code Playgroud)

想要中间有逗号吗?将分隔符更改为paste

$ seq 10 | shuf | paste - -s -d ','
2,4,9,1,8,7,3,5,10,6
Run Code Online (Sandbox Code Playgroud)