Réponses:
Vous pouvez utiliser la shufcommande de GNU coreutils . L'utilitaire est assez rapide et prendrait moins d'une minute pour mélanger un fichier de 1 Go.
La commande ci-dessous pourrait bien fonctionner dans votre cas car shuflira l'entrée complète avant d'ouvrir le fichier de sortie:
$ shuf -o File.txt < File.txt
brew install coreutilset utilisez /usr/local/bin/gshuf.
cat myfile | perl -MList::Util=shuffle -e 'print shuffle(<STDIN>);' Je suis sûr de la vitesse à laquelle il fonctionnerait
Python one-liner:
python -c 'import sys, random; L = sys.stdin.readlines(); random.shuffle(L); print "".join(L),'
Lit toutes les lignes de l'entrée standard, les mélange sur place, puis les imprime sans ajouter de nouvelle ligne de fin (remarquez ,la fin).
Pour OSX, le binaire est appelé gshuf.
brew install coreutils
gshuf -o File.txt < File.txt
Si, comme moi, vous êtes venu ici pour chercher une alternative à shufmacOS, utilisez-le randomize-lines.
Installez le package randomize-lines(homebrew), qui a une rlcommande qui a des fonctionnalités similaires à shuf.
brew install randomize-lines
Usage: rl [OPTION]... [FILE]...
Randomize the lines of a file (or stdin).
-c, --count=N select N lines from the file
-r, --reselect lines may be selected multiple times
-o, --output=FILE
send output to file
-d, --delimiter=DELIM
specify line delimiter (one character)
-0, --null set line delimiter to null character
(useful with find -print0)
-n, --line-number
print line number with output lines
-q, --quiet, --silent
do not output any errors or warnings
-h, --help display this help and exit
-V, --version output version information and exit
J'ai oublié où je l'ai trouvé, mais voici ce shuffle.plque j'utilise:
#!/usr/bin/perl -w
# @(#) randomize Effectively _unsort_ a text file into random order.
# 96.02.26 / drl.
# Based on Programming Perl, p 245, "Selecting random element ..."
# Set the random seed, PP, p 188
srand(time|$$);
# Suck in everything in the file.
@a = <>;
# Get random lines, write 'em out, mark 'em done.
while ( @a ) {
$choice = splice(@a, rand @a, 1);
print $choice;
}
Au moins dans Ubuntu, il y a un programme appelé shuf
shuf file.txt