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.