How can I randomize the lines in a file using standard tools on Red Hat Linux? How can I randomize the lines in a file using standard tools on Red Hat Linux? linux linux

How can I randomize the lines in a file using standard tools on Red Hat Linux?


Um, lets not forget

sort --random-sort


shuf is the best way.

sort -R is painfully slow. I just tried to sort 5GB file. I gave up after 2.5 hours. Then shuf sorted it in a minute.


And a Perl one-liner you get!

perl -MList::Util -e 'print List::Util::shuffle <>'

It uses a module, but the module is part of the Perl code distribution. If that's not good enough, you may consider rolling your own.

I tried using this with the -i flag ("edit-in-place") to have it edit the file. The documentation suggests it should work, but it doesn't. It still displays the shuffled file to stdout, but this time it deletes the original. I suggest you don't use it.

Consider a shell script:

#!/bin/shif [[ $# -eq 0 ]]then  echo "Usage: $0 [file ...]"  exit 1fifor i in "$@"do  perl -MList::Util -e 'print List::Util::shuffle <>' $i > $i.new  if [[ `wc -c $i` -eq `wc -c $i.new` ]]  then    mv $i.new $i  else    echo "Error for file $i!"  fidone

Untested, but hopefully works.