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