Existe-t-il une commande Linux que l'on peut utiliser pour échantillonner un sous-ensemble d'un fichier ? Par exemple, un fichier contient un million de lignes et nous voulons échantillonner au hasard seulement mille lignes de ce fichier.
Pour aléatoire, je veux dire que chaque ligne a la même probabilité d'être choisie et qu'aucune des lignes choisies n'est répétitive.
head
et tail
peut choisir un sous-ensemble du fichier mais pas au hasard. Je sais que je peux toujours écrire un script python pour le faire, mais je me demande simplement s'il existe une commande pour cet usage.
Réponse acceptée :
Le shuf
La commande (qui fait partie de coreutils) peut faire ceci :
shuf -n 1000 file
Et au moins pour l'instant des versions non anciennes (ajoutées dans un commit de 2013), qui utiliseront l'échantillonnage de réservoir le cas échéant, ce qui signifie qu'il ne devrait pas manquer de mémoire et utilise un algorithme rapide.