楽しいだけで十分です

好きなことを書きます

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

参考

qiita.com