GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann man eine Teilmenge einer Datei zufällig abtasten?

Gibt es einen Linux-Befehl, mit dem eine Teilmenge einer Datei abgetastet werden kann? Beispielsweise enthält eine Datei eine Million Zeilen, und wir möchten nur tausend Zeilen aus dieser Datei nach dem Zufallsprinzip auswählen.

Mit zufällig meine ich, dass jede Zeile die gleiche Wahrscheinlichkeit hat, ausgewählt zu werden, und keine der ausgewählten Zeilen wiederholt sich.

head und tail kann eine Teilmenge der Datei auswählen, aber nicht zufällig. Ich weiß, dass ich dafür immer ein Python-Skript schreiben kann, aber ich frage mich nur, ob es einen Befehl für diese Verwendung gibt.

Akzeptierte Antwort:

Das shuf Befehl (Teil von Coreutils) kann dies tun:

shuf -n 1000 file

Und zumindest für jetzt nicht-alte Versionen (hinzugefügt in einem Commit von 2013), die bei Bedarf Reservoir-Sampling verwenden, was bedeutet, dass ihr nicht der Speicher ausgehen sollte und sie einen schnellen Algorithmus verwenden.


Linux
  1. So speichern Sie die Befehlsausgabe in einer Datei unter Linux

  2. So verwenden Sie den Tar-Befehl unter Linux

  3. Wie erzwinge ich das Löschen einer Datei?

  4. Wie hängt man die Ausgabe an eine Datei an?

  5. So generieren Sie eine Teilprüfsumme einer Datei

So verwenden Sie den Truncate-Befehl unter Linux

So verwenden Sie einen Dateibefehl unter Linux

So öffnen Sie eine Datei unter Linux

So mischen Sie Zeilen in einer Datei unter Linux

So verwenden Sie den Befehl lsof unter Linux

So verwenden Sie den Linux-Befehl shred