ファイルの最初の数行を読み取るのに時間がかかるのはなぜですか?

ファイルの最初の数行を読み取るのに時間がかかるのはなぜですか?

33GB程度の巨大なテキストファイルがありますが、サイズが大きいので、ファイルの構成方法を理解するために、ファイルの最初の数行だけを読みたいと思います。試しましたが、head実行を完了するのに長い時間がかかりました。 UNIXでは、head操作を実行する前にファイル全体を実行する必要があるためですか?もしそうなら、そのファイルの一部を表示するより速い方法はありますか?

答え1

これは実際にあなたの質問に答えません。速度が遅くなる理由headは次のとおりです。ジュリー・ペレティエ回答:ファイルには改行文字がまったく含まれていないため、表示したいhead行を見つけるには多くのファイルを読む必要があります。headもちろん、操作を実行する前にファイル全体を読み込む必要はなく、要求された行数に達すると読み取りが停止します。

改行に関連する速度の低下を避けたり、特定の行数を表示したりすることを気にしない場合は、ファイルの先頭を表示する簡単な方法は、たとえばdd最初の100バイトを表示することですhugefile

dd if=hugefile bs=100 count=1

別のオプションが提供されます。GNUヘッド/テールはなぜファイル全体を読むのですか?-c次のオプションを使用しますhead

head -c 100 hugefile

答え2

head私がこれが起こっているのを見た唯一のケースは、ファイルから必要な数の行だけを読んだので、ファイルに改行文字がないときでした。

関連情報