grepコマンドで、前後の行を取得する方法
ログを調査するときなどに、grepをよく使う。 ただ、grepで検索した文字列の前後の情報も欲しい時がある。 その場合は今までgrepした後に、別途lessで見直すなどしていた。 もっと便利なやり方あるんだろうなーと思ってたら、先輩エンジニアさんから教えてもらったのでメモ。
使うコマンド
# grepと一致した行と、その後のn行を表示する (after-contextの`A`) grep -An # grepと一致した行と、その前のn行を表示する (before-contextの`B`) grep -Bn # grepと一致した行と、その前後のn行を表示する (contextの`C`) grep -Cn
例
temp.txt (検索対象のファイル)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
-A
オプション
$ grep -A5 10 temp.txt 10 11 12 13 14 15
-B
オプション
$ grep -B5 10 temp.txt 5 6 7 8 9 10
-C
オプション
$ grep -C5 10 temp.txt 5 6 7 8 9 10 11 12 13 14 15