如何为Linux排序的--random sort选项设置任意种子?

如何为Linux排序的--random sort选项设置任意种子?,linux,sorting,pipe,Linux,Sorting,Pipe,在排序的手册页中,它说您可以设置一个随机源,如: $ sort some.txt --random-sort --random-source=/dev/urandom $ sort some.txt --random-sort --random-source=`date +"%m%d%H%M"` 我想将标准文本输出到源,如: $ sort some.txt --random-sort --random-source=/dev/urandom $ sort some.txt --random

在排序的手册页中,它说您可以设置一个随机源,如:

$ sort some.txt --random-sort --random-source=/dev/urandom
$ sort some.txt --random-sort --random-source=`date +"%m%d%H%M"`
我想将标准文本输出到源,如:

$ sort some.txt --random-sort --random-source=/dev/urandom
$ sort some.txt --random-sort --random-source=`date +"%m%d%H%M"`
但这只是说:

打开失败:11021103:没有此类文件或目录


我如何才能做到这一点?

这里有一个简单的python脚本,它接受一个种子并输出随机字节:

> cat rand_bits.py
import random
import sys

if len(sys.argv) > 1:
    rng = random.Random(int(sys.argv[-1]))
else:
    rng = random.Random(0xBA5EBA11)

try:
    while True:
        sys.stdout.write(chr(rng.getrandbits(8)))
except (IOError, KeyboardInterrupt):
    pass
sys.stdout.close()
您可以直接将这些字节送入排序:

> sort <(seq 25) -R --random-source=<(python rand_bits.py 5) 
8
2
4
7
10
19
17
11
3
20
14
18
1
16
25
12
5
21
24
23
22
9
15
13
6


> cat rand_bits.py
import random
import sys

if len(sys.argv) > 1:
    rng = random.Random(int(sys.argv[-1]))
else:
    rng = random.Random(0xBA5EBA11)

try:
    while True:
        sys.stdout.write(chr(rng.getrandbits(8)))
except (IOError, KeyboardInterrupt):
    pass
sys.stdout.close()
您可以直接将这些字节送入排序:

> sort <(seq 25) -R --random-source=<(python rand_bits.py 5) 
8
2
4
7
10
19
17
11
3
20
14
18
1
16
25
12
5
21
24
23
22
9
15
13
6

>排序
--随机源
需要一个文件(因此需要一个设备/常规文件/fifo等)。我想您可能已经假设,
--random source
为伪RNG设置了种子。它需要一个已经包含熵的文件,或者可以生成熵的某种类型的设备(如
/dev/urandom
/dev/random
等)。有什么原因不能使用
/dev/uradom
--随机源需要一个文件(因此设备/常规文件/fifo等)。我想您可能已经假设,
--random source
为伪RNG设置了种子。它需要一个已经包含熵的文件,或者可以生成熵的某种类型的设备(如
/dev/urandom
/dev/random
等)。有什么原因不能使用
/dev/uradom
?因为OP试图从日期/时间设置种子,我想知道这是否会更接近他们想要的:
排序,复制他的示例的意图是,但是,如果他没有选择种子,他也可以像其他人所说的那样使用
/dev/uradom
。因为OP试图从日期/时间设置种子,我想知道这是否更接近他们想要的:
排序,这将复制他的示例的意图是的,但如果他没有选择种子,他也可以像其他人所说的那样使用
/dev/uradom