いいえ、ファイルは行アドレス指定可能ではありません。
行 n の開始を一定時間で見つける方法はありません テキストファイルで。ファイルをストリーミングして、改行をカウントする必要があります。
仕事をするために必要な最も簡単で最速のツールを使用してください。私には head
を使って たくさん作る grep
よりも理にかなっている 、後者ははるかに複雑であるためです。 「grep
」と言っているのではありません は遅い」、実際にはそうではありませんが、head
よりも速い場合は驚くでしょう。 この場合。それは head
のバグでしょう 、基本的に。
GNU-grep を使用すると、
と言うことができますgrep --context=10 ...
# print line number 52
sed -n '52p' # method 1
sed '52!d' # method 2
sed '52q;d' # method 3, efficient on large files
大きなファイルで効率的な方法 3
特定の行を表示する最速の方法
行番号がわかっているが他に何もない場合 (grep は不可能)、他に 2 つの解決策を見つけました:
20 行目から 40 行目が必要だとすると、
sed -n '20,40p;41q' file_name
または
awk 'FNR>=20 && FNR<=40' file_name
sed
を使用する場合 ファイルの最後まで処理を続けるよりも、最後の行を出力した後に処理を終了する方が効率的です。これは、大きなファイルや最初に行を印刷する場合に特に重要です。そうするために、 sed
上記のコマンドは命令 41q
を導入します この例では、20 ~ 40 行のみに関心があるため、41 行目以降の処理を停止します。 41 を、関心のある最後の行に 1 を加えたものに変更する必要があります。