Si vous avez déjà joué au jeu de cartes, vous connaissez probablement le terme mélange. Un peu difficile à imaginer, il existe un outil de ligne de commande Linux qui fait exactement cela avec des lignes dans des fichiers. Dans ce didacticiel, nous aborderons les bases de la commande "shuf" à l'aide d'exemples faciles à comprendre.
Mais avant cela, il convient de mentionner que tous les exemples ici ont été testés sur une machine Ubuntu 18.04 LTS.
Commande Linux shuf
La commande shuf sous Linux vous permet de générer des permutations aléatoires. Voici sa syntaxe :
shuf [OPTION]... [FILE]
Et voici comment la page de manuel de l'outil l'explique :
Write a random permutation of the input lines to standard output.
Voici quelques exemples de style Q&A qui devraient vous donner une meilleure idée du fonctionnement de la commande shuf.
Q1. Comment utiliser la commande shuf ?
L'utilisation de base est très simple. Passez simplement un nom de fichier en entrée. Voici un exemple :
shuf test.txt
Maintenant, le fichier test.txt contient les lignes suivantes :
1
2
3
4
5
6
7
8
9
Mais la commande shuf ci-dessus a produit le résultat suivant :
3
4
6
5
1
8
2
7
9
Vous pouvez donc voir que les lignes ont été mélangées.
Q2. Comment limiter le nombre de lignes en sortie ?
Si vous souhaitez limiter le nombre de lignes dans la sortie shuf, utilisez l'option de ligne de commande -n, qui vous oblige à transmettre un nombre qui représente le nombre maximum de lignes que vous voulez dans la sortie.
Par exemple :
shuf -n 3 test.txt
La commande ci-dessus a produit le résultat suivant :
6
4
9
Q3. Comment autoriser la répétition des lignes dans la sortie ?
Supposons que le fichier d'entrée contienne 9 lignes, mais que vous vouliez que shuf produise plus de lignes que cela en sortie (en utilisant l'option -n discutée ci-dessus). Cela peut être fait en utilisant l'option -r.
-r, --repeat
output lines can be repeated
Donc, si vous voulez que shuf produise 25 lignes en sortie, exécutez la commande suivante :
shuf -r -n 25 test.txt
Voici le résultat produit par cette commande :
6
8
4
5
9
3
3
1
2
5
7
5
9
5
8
5
2
8
8
7
4
4
8
5
3
Q4. Comment faire en sorte que shuf traite les arguments d'entrée comme des lignes ?
Pour cela, utilisez l'option de ligne de commande -e. Voici un exemple :
shuf -e 1 2 3 4 5 6 7 8 9
Voici la sortie produite par cette commande :
9
1
7
8
6
2
3
5
4
Conclusion
D'accord, shuf n'est pas le genre d'outil dont vous auriez besoin tous les jours, mais il n'y a pas de mal à en apprendre davantage sur cet utilitaire, d'autant plus que sa courbe d'apprentissage n'est pas si abrupte. Une fois que vous avez terminé de pratiquer tout ce dont nous avons discuté ici, rendez-vous sur la page de manuel de l'outil pour en savoir plus.