grepコマンドで表示された行の前後の行を表示する方法をご紹介します。
「/etc/passwd」の先頭20行を使用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
[root@kamotora ~]# cat /etc/passwd | head -20 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin haldaemon:x:68:68:HAL daemon:/:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin [root@kamotora ~]# |
「shutdown」の文字がある行を検索します。
1 2 3 |
[root@kamotora ~]# cat /etc/passwd | head -20 | grep shutdown shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown [root@kamotora ~]# |
1行表示されました。
それでは、今回やりたい「grepコマンドで表示された行の前後の行を表示する」方法ですが、「-A」オプション、「-B」オプションを使用します。
「-A」は「After」を、「-B」は「Before」を表しています。
「-A2」もしくは「-A 2」と指定することで、検索された行の下2行分を表示できます。
「-B5」もしくは「-B 5」と指定することで、検索された行の上5行分を表示できます。
実際にやってみましょう。
1 2 3 4 5 6 7 8 9 10 |
[root@kamotora ~]# cat /etc/passwd | head -20 | grep -A5 -B2 shutdown <span style="color: #ff0000;">lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync</span> shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown<span style="color: #0000ff;"> halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin</span> [root@kamotora ~]# |
grepでヒットしたshutdownの行に加え、「-B」で指定した赤文字の箇所、「-A」で指定した青文字の箇所が表示されていることがわかります。