Shuffling lines of a file with a fixed seed?

后端 未结 3 1403
粉色の甜心
粉色の甜心 2020-12-16 14:43

I want to shuffle the lines of a file with a fixed seed so that I always get the same random order. The command I am using is as follows:

sort -R file.txt |          


        
3条回答
  •  感动是毒
    2020-12-16 15:31

    The GNU implementation of sort has a --random-source argument. Passing this argument with the name of a file with known contents will result in a reliable set of output.

    See the Random sources documentation in the GNU coreutils manual, which contains the following sample implementation and example:

    get_seeded_random()
    {
      seed="$1"
      openssl enc -aes-256-ctr -pass pass:"$seed" -nosalt \
        /dev/null
    }
    
    shuf -i1-100 --random-source=<(get_seeded_random 42)
    

    Since GNU sort is also part of coreutils, the relevant documentation applies there as well:

    sort --random-source=<(get_seeded_random 42) -R file.txt | head -200 > file.sff
    

提交回复
热议问题