如何在 Linux 上透過管道傳輸大型文字檔案時有效地對其進行打亂?

如何在 Linux 上透過管道傳輸大型文字檔案時有效地對其進行打亂?

我有一個幾個 GB 的文字檔。我正在嘗試在管道中隨機播放該文字檔案。

例如,這些是我正在使用的一些範例行,但它效率不高,實際上管道似乎在讀取整個文件之前才啟動。也許我錯了。

shuf HUGETEXTFILE.txt|some command

cat HUGETEXTFILE.txt|sort -R |some command

我也嘗試使用

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

但是當第一個區塊完成時管道就會結束。

我正在嘗試找到一種有效的方法來在管道中對文字檔案進行洗牌,因為我不想每次需要新的洗牌方式或隨機分佈時都寫入數百個檔案。

謝謝

答案1

您可以嘗試這種方法:

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

IFS 用於將輸出分成幾行。

相關內容