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 を使用して出力を行に分割します。

関連情報