
grepで見つかった行から始まるファイルのすべての行を表示するには、どのコマンドを使用すればよいですか?
つまり、私は grep で識別した行から始まる末尾のようなものを想像します。
たとえば、ログを調べていて、そこに時間が含まれているポイントを特定できます。そこで、特定の日時を含むログ行の後に続くすべてのログ行を表示したいとします。
答え1
こうすればできるはずです:
sed -n -e "/pattern/,\$p" filename
答え2
grepの-Aオプションはこれを可能にします。通常の使用方法はコンテキストです後一致、およびコンテキスト用の-B前に一致します。-m オプションは一致の数を制限します。
grep -A1000000 -m1 <search> <file>
最大 1000000 行のコンテキストを出力します (これを機能させるには、その数がファイル内の行数よりも大きいことを確認してください。ファイルが 1000000 行を超える場合、grep はおそらく適切なツールではありません)。同様に、
grep -B1000000 -m1 <search> <file>
は、最初の一致までのすべての行を出力します。(私の知る限り、これはこれらのオプションの本来の使用法ではありませんが、その動作の自然な副作用です。代替策としては、grep 以外のプログラムを使用することです。)