Bashスクリプトおよび大きなファイル(バグ):リダイレクトからの読み取り組み込みを使用した入力は、予期しない結果をもたらします
大きなファイルとbash。これはコンテキストです: 私は大きなファイルを持っています:75Gと400,000,000行(これはログファイルです、私の悪い、私はそれを成長させました)。 各行の最初の10文字は、YYYY-MM-DD形式のタイムスタンプです。 そのファイルを分割したい:1日1ファイル。 動作しなかった次のスクリプトを試しました。 私の質問は、このスクリプトが機能しないことであり、代替ソリューションではありません。 while read line; do new_file=${line:0:10}_file.log echo "$line" >> $new_file done < file.log デバッグ後、new_file変数に問題が見つかりました。このスクリプト: while read line; do new_file=${line:0:10}_file.log echo $new_file done < file.log | uniq -c 結果を以下に示します(xデータを機密に保つためにes を入れましたが、他のcharsは実際のものです)。に注意してくださいdhと短い文字列に。 ... 27402 2011-xx-x4 27262 2011-xx-x5 22514 2011-xx-x6 17908 2011-xx-x7 ... 3227382 2011-xx-x9 4474604 2011-xx-x0 1557680 2011-xx-x1 …