Wie kann man große Textdateien effizient mischen und gleichzeitig unter Linux weiterleiten?

Wie kann man große Textdateien effizient mischen und gleichzeitig unter Linux weiterleiten?

Ich habe eine Textdatei, die mehrere GB groß ist. Ich versuche, diese Textdatei in einer Pipe zu verschieben.

Dies sind beispielsweise einige Beispielzeilen dessen, was ich verwende, aber es ist nicht effizient und tatsächlich scheint die Pipe erst zu starten, wenn die gesamte Datei gelesen ist. Vielleicht irre ich mich da.

shuf HUGETEXTFILE.txt|some command

cat HUGETEXTFILE.txt|sort -R |some command

Ich habe auch versucht,

split -n 1/numberofchunks HUGETEXTFILE.txt|sort -R|some command 

Aber die Weiterleitung endet, wenn der erste Block fertig ist.

Ich versuche, eine effiziente Möglichkeit zum Umordnen von Textdateien in einer Pipe zu finden, da ich nicht jedes Mal Hunderte von Dateien schreiben möchte, wenn ich eine neue Möglichkeit zum Umordnen oder zur zufälligen Verteilung benötige.

Danke

Antwort1

Sie können diesen Ansatz versuchen:

cat bigfile.txt|
  while IFS= read -r line; do
    echo '%s\n' "$line" |shuf |sort -n| grep "sample";
  done

IFS wird hier verwendet, um die Ausgabe in Zeilen aufzuteilen.

verwandte Informationen