大容量ファイル(それぞれ数GB)を含むフォルダがあります。これらのファイルを検索したいですPATTERN
。または、以下を使用してgrep
これを実行できますack
。
$ grep -n 'PATTERN' /path/to/files/*.log
今を含むすべての行を含むリストがありますPATTERN
。ただし、コンテキストを表示するには、これらの行を含むいくつかの領域(発生前の数行PATTERN
と発生後の数行)が必要です。私はこれらの行ブロックを各行の座標(ファイルと行番号)と共にリストすることを好みます。どうすればいいですか?
答え1
Gnu grepを使う
grep -B <number_lines> -A <number_lines> -n 'PATTERN' /path/to/files/*.log
たとえば、上の6行に一致するgrep行の後ろの4行を取得するには
grep -B 6 -A 4 -n 'PATTERN' /path/to/files/*.log
~からman grep
コンテキストライン制御
-A NUM、--after-context = NUM
行を一致させた後、NUM行末尾のコンテキストを印刷します。
-B NUM, --before-context=NUM
行を一致させる前に先行コンテキストの NUM 行を印刷します。