grepコマンドを使用して検索した行の前後を確認する方法を記します。
以下のオプションによりパターンマッチした前後を表示することができます。
-A 行数 | パターンマッチした行の後ろの行を表示する。 |
-B 行数 | パターンマッチした行の前の行を表示する。 |
-C 行数 | パターンマッチした行の前後の行を表示する。 |
以下、-A, -B, -Cオプションを使用した例を記します。
尚、使用したデータは以下の通りです。
$ cat pref.txt hokkaido aomori iwate miyagi akita yamagata fukushima ibaraki tochigi gunma saitama chiba tokyo kanagawa niigata toyama ishikawa fukui yamanashi nagano gifu shizuoka aichi mie shiga kyoto osaka hyogo nara wakayama tottori shimane okayama hiroshima yamaguchi tokushima kagawa ehime kochi fukuoka saga nagasaki kumamoto oita miyazaki kagoshima okinawa
キーワードがtokyoで-Aオプションに1と2を渡した場合の実行結果です。
tokyoの後ろにある行が表示されるのが確認できます。
$ grep -A 1 tokyo pref.txt tokyo kanagawa $ grep -A 2 tokyo pref.txt tokyo kanagawa niigata
キーワードがtokyoで-Bオプションに1と2を渡した場合の実行結果です。
tokyoの前にある行が表示されるのが確認できます。
$ grep -B 2 tokyo pref.txt saitama chiba tokyo $ grep -B 1 tokyo pref.txt chiba tokyo
キーワードがtokyoで-Cオプションに1と2を渡した場合の実行結果です。
tokyoの前後にある行が表示されるのが確認できます。
$ grep -C 1 tokyo pref.txt chiba tokyo kanagawa $ grep -C 2 tokyo pref.txt saitama chiba tokyo kanagawa niigata
オプション-A, -Bの両方を使えば、パターンマッチした行の前何行、後ろ何行という風に出力することができます。
以下の実行結果は、前2行、後ろ3行を指定し実行した結果です。
$ grep -B 2 -A 3 tokyo pref.txt saitama chiba tokyo kanagawa niigata toyama