grepで該当した行の前後を表示する方法
概要
grepでログファイルなどを調べた場合、該当した(パターンマッチした)行だけはなく該当した行の前後や、該当した行の前5行とか、該当した行の前5行とか表示したい場合があります。
その場合は、grepコマンドのオプションの「-A」・「-B」・「-C」を使います。
- 該当した行の後を表示する場合は、「-A」
- 該当した行の前を表示する場合は、「-B」
- 該当した行の前後を表示する場合は、「-C」
コマンド
実際に、grepコマンドの「-A」・「-B」・「-C」オプションを使用した例で説明します。説明で使用するファイルは、以下のような /etc/groupを加工したファイルを利用します
$ cat test.log 1:root:x:0: 2:bin:x:1: 3:daemon:x:2: 4:sys:x:3: 5:adm:x:4: 6:tty:x:5: 7:disk:x:6: 8:lp:x:7: 9:mem:x:8: 10:kmem:x:9: 11:wheel:x:10: 12:cdrom:x:11: 13:mail:x:12: 14:man:x:15: 15:dialout:x:18: 16:floppy:x:19: 17:games:x:20: 18:tape:x:30: 19:video:x:39: 20:ftp:x:50: 21:lock:x:54: 22:audio:x:63: 23:nobody:x:99: 24:users:x:100: 25:utmp:x:22:
grep -A (該当した行の後◯行を表示)
検索するファイル内に検索する文字列が該当した場合、該当した行と後の◯行を出力します
grep -A 【行数】検索文字列 【検索するファイル名】
キーワードが「sys」で該当した行の後2行を表示する(-A 2)と、該当した行の後5行を表示する(-A 5)を使用した場合のサンプルです
$ grep -A 2 sys test.log 4:sys:x:3: 5:adm:x:4: 6:tty:x:5: $ grep -A 5 sys test.log 4:sys:x:3: 5:adm:x:4: 6:tty:x:5: 7:disk:x:6: 8:lp:x:7: 9:mem:x:8:
grep -B (該当した行の前◯行を表示)
検索するファイル内に検索する文字列が該当した場合、該当した行と前の◯行を出力します
grep -B 【行数】検索文字列 【検索するファイル名】
キーワードが「ftp」で該当した行の前2行を表示する(-A 2)と、該当した行の前5行を表示する(-A 5)を使用した場合のサンプルです
$ grep -B 2 ftp test.log 18:tape:x:30: 19:video:x:39: 20:ftp:x:50: $ grep -B 5 ftp test.log 15:dialout:x:18: 16:floppy:x:19: 17:games:x:20: 18:tape:x:30: 19:video:x:39: 20:ftp:x:50:
grep -C (該当した行の前後◯行を表示)
検索するファイル内に検索する文字列が該当した場合、該当した行と前後の◯行を出力します
grep -C 【行数】検索文字列 【検索するファイル名】
該当した行キーワードが「mail」で該当した行の前後2行を表示する(-A 2)と、該当した行の前後5行を表示する(-A 5)を使用した場合のサンプルです
$ grep -C 2 mail test.log 11:wheel:x:10: 12:cdrom:x:11: 13:mail:x:12: 14:man:x:15: 15:dialout:x:18: $ grep -C 5 mail test.log 8:lp:x:7: 9:mem:x:8: 10:kmem:x:9: 11:wheel:x:10: 12:cdrom:x:11: 13:mail:x:12: 14:man:x:15: 15:dialout:x:18: 16:floppy:x:19: 17:games:x:20: 18:tape:x:30:
grep -A -B (該当した行の前◯行、後◯行を表示)
-Aと-Bを組み合わせ使用した場合は、検索するファイル内に検索する文字列が該当した場合、該当した行と前の◯行、後の◯行を出力できます
grep -A 【行数】-B 【行数】検索文字列 【検索するファイル名】
該当した行キーワードが「game」で該当した行の後2行(-A 2)と前の5行(-B 5)を表示する場合のサンプルです
$ grep -A 2 -B 5 game test.log 12:cdrom:x:11: 13:mail:x:12: 14:man:x:15: 15:dialout:x:18: 16:floppy:x:19: 17:games:x:20: 18:tape:x:30: 19:video:x:39:
ディスカッション
コメント一覧
まだ、コメントがありません