このページの内容

2.1.5 文脈行の制御

文脈行とは、一致行の近くにある一致しない行です。以下のいずれかのオプションを使った場合だけ出力します。これらのオプションの設定にかかわらず、grepが同じ行を複数回出力することはありません。-o(--only-matching)オプションを指定した場合、これらのオプションは効果がなく、使用すると警告が出ます。

-A num
--after-context=num

一致行の後ろにあるnum行の文脈を表示します。

-B num
--before-context=num

一致行の前にあるnum行の文脈を表示します。

-C num
-num
--context=num

一致行の前後にあるnum行ずつの文脈を表示します。

--group-separator=string

-A、-B、-Cを使う場合、行のグループ間に「--」の代わりにstringを表示します。

--no-group-separator

-A、-B、-Cを使う場合、行のグループ間に区切りを表示しません。

接頭フィールドと行内容の間に表示する区切りを、grepがどのように選ぶかについて、次の点に注意してください。

  • 一致行では通常、接頭フィールドと実際の行内容の間の区切りとして「:」を使います。
  • 文脈行、つまり一致しない行では、代わりに「-」を使います。
  • 文脈を指定しない場合、一致行を続けてそのまま出力します。
  • 文脈を指定した場合、入力で隣接する行はグループとなり、続けて出力します。一方、既定では、隣接しないグループの間に区切りが表示されます。
  • 既定の区切りは「--」だけを含む行です。上記のオプションで、区切りの有無や表示内容を変更できます。
  • 一致行同士が十分近く、隣り合う2つのグループがつながって1つの連続したグループへ統合できる場合、各グループには複数の一致行が含まれることがあります。