GNU/Linux >> Linux の 問題 >  >> Linux

ファイルの途中で特定の行を表示するためのクイックunixコマンド?

いいえ、ファイルは行アドレス指定可能ではありません。

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 を加えたものに変更する必要があります。


Linux
  1. コマンドラインを使用してLinuxでtar.gzファイルを抽出する方法

  2. コマンドラインでのSSHファイルコピーの魔法

  3. sedを使用してコマンドラインでテキストを操作する

  1. LinuxコマンドラインからのGoogleドライブの使用

  2. ファイルの最初の行の前にテキストを挿入する方法は?

  3. コマンドSed‘1!g; h; $!d’は、ファイルの内容をどのように逆にしますか?

  1. Linuxコマンドラインでファイルから特定の行を削除する

  2. Linux でコマンドラインを使用して任意のファイルをダウンロードするための 4 つのツール

  3. UNIX/Linux でファイルの行数を数える方法