GNU/Linux >> Tutoriels Linux >  >> Linux

Comment échantillonner aléatoirement un sous-ensemble d'un fichier ?

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.


Linux
  1. Comment enregistrer la sortie de la commande dans un fichier sous Linux

  2. Comment utiliser la commande Tar sous Linux

  3. Comment ajouter la sortie à un fichier ?

  4. Comment générer une somme de contrôle partielle d'un fichier

  5. Comment éditer un fichier texte dans mon terminal

Comment utiliser la commande Truncate sous Linux

Comment utiliser une commande de fichier sous Linux

Comment ouvrir un fichier sous Linux

Comment mélanger les lignes dans un fichier sous Linux

Comment utiliser la commande lsof sous Linux

Comment utiliser la commande shred Linux