このページの内容

2.1.2 照合の制御

-e patterns
--regexp=patterns

patternsを1つ以上のパターンとして使います。patterns内の改行はパターン同士を区切ります。このオプションを複数回使う場合、または-f(--file)オプションと組み合わせる場合は、指定したすべてのパターンを検索します。シェルコマンドでgrepを使う場合、通常はpatternsを引用符で囲む必要があります。(-eはPOSIXで定められています。)

-f file
--file=file

fileから1行につき1つのパターンを取得します。このオプションを複数回使う場合、または-e(--regexp)オプションと組み合わせる場合は、指定したすべてのパターンを検索します。fileが「-」の場合、標準入力からパターンを読み込みます。空のファイルにはパターンが0個含まれるため、何にも一致しません。(-fはPOSIXで定められています。)

-i
-y
--ignore-case

パターンと入力データの大文字・小文字の違いを無視し、大文字・小文字だけが異なる文字同士を一致させます。小文字と大文字の対だけが異なる文字については単純ですが、それ以外の場合の動作は未規定です。たとえば、大文字の「S」には、多くのロケールで「ſ」(Unicode文字U+017F LATIN SMALL LETTER LONG S)という特殊な小文字の対応があります。この文字を大文字にすると「S」になりますが、この文字が「S」や「s」に一致するかどうかは未規定です。別の例として、ドイツ語の小文字「ß」(U+00DF LATIN SMALL LETTER SHARP S)は通常、2文字の文字列「SS」として大文字化されますが、「SS」には一致しません。また、大文字「ẞ」(U+1E9E LATIN CAPITAL LETTER SHARP S)を小文字にすると「ß」になるにもかかわらず、「ẞ」に一致しない場合があります。

-yは、互換性のために用意された古い同義オプションです。(-iはPOSIXで定められています。)

--no-ignore-case

パターンと入力データの大文字・小文字の違いを無視しません。これが既定の動作です。2つのオプションは互いを上書きするため、このオプションを、すでに-iを使っているシェルスクリプトへ渡すと、その効果を取り消せます。

-v
--invert-match

一致の選択を反転し、一致しない行を選択します。(-vはPOSIXで定められています。)

-w
--word-regexp

単語全体として一致する部分を含む行だけを選択します。一致する部分文字列は、行の先頭にあるか、直前に単語を構成しない文字がある必要があります。同様に、行の末尾にあるか、直後に単語を構成しない文字がある必要があります。単語を構成するのは、アルファベットなどの字母、数字、アンダースコアです。-xも指定した場合、このオプションは効果がありません。

-wオプションは、先頭と末尾が単語を構成する文字でない部分文字列にも一致できるため、正規表現を「\<」と「\>」で囲む方法とは異なります。たとえば、「grep -w @」は「@」だけを含む行に一致しますが、「@」は単語を構成する文字ではないため、「grep '\<@\>'」はどの行にも一致できません。「特殊なバックスラッシュ表現」を参照してください。

-x
--line-regexp

行全体に完全に一致するものだけを選択します。正規表現パターンの場合、各パターンを丸括弧で囲み、さらに「^」と「$」で囲むのと同様です。(-xはPOSIXで定められています。)