grep、egrep、fgrep、rgrep - パターンに一致する行を出力
構文
grep [オプション]... パターン [ファイル]...
grep [オプション]... -e パターン ... [ファイル]...
grep [オプション]... -f パターンファイル ... [ファイル]...
説明
grep は、各ファイルでパターンを検索します。構文の最初の形式は、-e または -f オプションが指定されていない場合に用いられます。この形式では、最初のオペランド「パターン」は、改行文字で区切られた 1 つ以上のパターンであり、grep はパターンに一致する各行を出力します。通常、「パターン」はシェルコマンドで使用する際に引用符で囲む必要があります。
「-」で表されるファイルは、標準入力を意味します。ファイルが指定されていない場合、再帰的な検索では作業ディレクトリを調べ、非再帰的な検索では標準入力を読み取ります。
Debian には、egrep、fgrep、rgrep というバリアントプログラムも含まれています。これらのプログラムは、それぞれ grep -E、grep -F、grep -r と同じです。これらのバリアントはアップストリームでは非推奨ですが、Debian では後方互換性のために提供されています。移植性を考慮すると、バリアントプログラムを使用せず、代わりに grep と関連するオプションを使用することをお勧めします。
オプション
汎用プログラム情報
--help 使用法メッセージを出力して終了します。
-V、--version
grep のバージョン番号を出力して終了します。
パターン構文
-E、--extended-regexp
パターンを拡張正規表現 (ERE) として解釈します。
-F、--fixed-strings
パターンを固定文字列として解釈し、正規表現としては解釈しません。
-G、--basic-regexp
パターンを基本正規表現 (BRE) として解釈します。これはデフォルトです。
-P、--perl-regexp
パターンを Perl 互換の正規表現 (PCRE) として解釈します。このオプションは、-z (--null-data) オプションと組み合わせて使用すると実験的であり、grep -P は実装されていない機能について警告する場合があります。
一致制御
-e パターン、--regexp=パターン
パターンとして指定されたパターンを使用します。このオプションが複数回使用された場合、または -f (--file) オプションと組み合わせて使用された場合、指定されたすべてのパターンを検索します。このオプションは、「-」で始まるパターンを保護するために使用できます。
-f ファイル、--file=ファイル
ファイルから 1 行あたり 1 つのパターンを取得します。このオプションが複数回使用された場合、または -e (--regexp) オプションと組み合わせて使用された場合、指定されたすべてのパターンを検索します。空のファイルにはパターンが 1 つも含まれていないため、一致する行は何も出力されません。ファイルが「-」の場合、標準入力からパターンを読み取ります。
-i、--ignore-case
パターンと入力データの大文字と小文字の違いを無視して、大文字と小文字のみが異なる文字を一致させます。
--no-ignore-case
パターンと入力データの大文字と小文字の違いを無視しません。これはデフォルトです。このオプションは、すでに -i を使用しているシェルスクリプトに渡して、その効果をキャンセルするために使用すると便利です。2 つのオプションは互いにオーバーライドします。
-v, --invert-match
一致の条件を反転させ、一致しない行を選択します。
-w, --word-regexp
一致する部分が単語全体を構成する行のみを選択します。一致する部分文字列は、行の先頭にあるか、単語を構成しない文字で始まる必要があります。同様に、行の末尾にあるか、単語を構成しない文字で終わる必要があります。単語を構成する文字は、文字、数字、およびアンダースコアです。このオプションは、-x も指定されている場合は効果がありません。
-x, --line-regexp
行全体と完全に一致する一致のみを選択します。正規表現パターンでは、これはパターンを括弧で囲み、その周りを ^ と $ で囲むのと同じです。
一般的な出力制御
-c, --count
通常出力を抑制し、代わりに各入力ファイルについて、一致する行の数を表示します。-v、--invert-match オプション(上記を参照)を使用すると、一致しない行の数をカウントします。
--color[=WHEN], --colour[=WHEN]
一致する(空ではない)文字列、一致する行、コンテキスト行、ファイル名、行番号、バイトオフセット、およびセパレータ(フィールドとコンテキスト行のグループ用)を、端末で色付きで表示するために、エスケープシーケンスで囲みます。色は、環境変数 GREP_COLORS によって定義されます。WHEN は、never、always、または auto です。
-L, --files-without-match
通常出力を抑制し、代わりに通常出力されない出力を持つ各入力ファイルの名前を表示します。
-l, --files-with-matches
通常出力を抑制し、代わりに通常出力を持つ各入力ファイルの名前を表示します。各入力ファイルのスキャンは、最初の照合で停止します。
-m NUM, --max-count=NUM
NUM 個の一致する行の後にファイルの読み込みを停止します。NUM がゼロの場合、grep は入力を読み込まずにすぐに停止します。NUM が -1 の場合、無限大として扱い、grep は停止しません。これはデフォルトです。入力が通常のファイルからの標準入力である場合、NUM 個の一致する行が出力されると、grep は後続のコンテキスト行の存在に関係なく、標準入力を最後の照合行の直後に配置してから終了します。これにより、呼び出しプロセスは検索を再開できます。grep が NUM 個の一致する行の後に停止すると、後続のコンテキスト行が出力されます。-c または --count オプションも使用されている場合、grep は NUM よりも大きい数を表示しません。-v または --invert-match オプションも使用されている場合、grep は NUM 個の一致しない行を出力した後に停止します。
-o, --only-matching
一致する(空ではない)一致する行の部分のみを出力し、各部分を別の出力行に表示します。
-q, --quiet, --silent
静かに動作します。標準出力に何も書き込みません。一致するものが見つかった場合、エラーが検出されても、すぐに 0 のステータスで終了します。-s または --no-messages オプションも参照してください。
-s, --no-messages
存在しない、または読み取り不可能なファイルに関するエラーメッセージを抑制します。
出力行のプレフィックス制御
-b, --byte-offset
入力ファイル内の各行の出力の前に、0ベースのバイトオフセットを出力します。-o (--only-matching) が指定されている場合は、一致する部分自体のオフセットを出力します。
-H, --with-filename
各一致に対してファイル名を出力します。検索対象のファイルが複数ある場合にデフォルトで有効になります。これは GNU 拡張です。
-h, --no-filename
出力時にファイル名のプレフィックス表示を抑制します。ファイルが1つだけ(または標準入力のみ)の場合にデフォルトで有効になります。
--label=LABEL
標準入力から入力されるものを、ファイル LABEL から入力されるものとして表示します。ファイルの内容を変換してから検索するコマンドで使用すると便利です (例: gzip -cd foo.gz | grep --label=foo -H 'some pattern')。-H オプションも参照してください。
-n, --line-number
各出力行の先頭に、その入力ファイル内の1ベースの行番号を付加します。
-T, --initial-tab
実際の行コンテンツの最初の文字がタブストップに揃うようにします。これにより、-H、-n、-b などのオプションを使用して出力にプレフィックスを付加する場合に、タブの配置が通常に見えるようになります。また、単一ファイルのすべての行が同じ列で開始される可能性を高めるために、行番号とバイトオフセット(存在する場合)を最小のフィールド幅で出力します。
-Z, --null
通常、ファイル名の後に続く文字の代わりに、ゼロバイト(ASCII NUL文字)を出力します。たとえば、grep -lZ は、通常の改行の代わりに、各ファイル名の後にゼロバイトを出力します。このオプションにより、ファイル名に改行などの特殊な文字が含まれている場合でも、出力が一意になります。このオプションは、find -print0、perl -0、sort -z、xargs -0 などのコマンドと組み合わせて、改行文字を含む任意のファイル名を処理するために使用できます。
コンテキスト行の制御
-A NUM, --after-context=NUM
一致した行の後に、NUM 行の末尾コンテキストを出力します。連続する一致グループの間に、グループセパレーター(--)を含む行を配置します。-o または --only-matching オプションが指定されている場合、このオプションは効果がなく、警告が表示されます。
-B NUM, --before-context=NUM
一致した行の前に、NUM 行の先頭コンテキストを出力します。連続する一致グループの間に、グループセパレーター(--)を含む行を配置します。-o または --only-matching オプションが指定されている場合、このオプションは効果がなく、警告が表示されます。
-C NUM, -NUM, --context=NUM
NUM 行の出力コンテキストを出力します。連続する一致グループの間に、グループセパレーター(--)を含む行を配置します。-o または --only-matching オプションが指定されている場合、このオプションは効果がなく、警告が表示されます。
--group-separator=SEP
-A、-B、または -C が使用されている場合、-- ではなく SEP をグループ間の区切り文字として出力します。
--no-group-separator
-A、-B、または -C が使用されている場合、グループ間の区切り文字を出力しません。
ファイルとディレクトリの選択
-a, --text
バイナリファイルをテキストファイルとして処理します。これは、--binary-files=text オプションと同等です。
--binary-files=TYPE
ファイルの内容またはメタデータが、ファイルにバイナリデータが含まれていることを示す場合、ファイルは TYPE のタイプであると仮定します。非テキストバイトはバイナリデータを示し、これらは不適切にエンコードされた出力バイト、または -z オプションが指定されていない場合に null 入力バイトです。
デフォルトでは、TYPE は binary であり、grep は null 入力バイナリデータが検出されると出力を抑制し、不適切にエンコードされたデータを含む出力行も抑制します。何らかの出力が抑制された場合、grep は標準エラーにバイナリファイルが一致したというメッセージを出力します。
TYPE が without-match の場合、grep が null 入力バイナリデータを見つけると、残りのファイルは一致しないと仮定します。これは、-I オプションと同等です。
TYPE が text の場合、grep はバイナリファイルをテキストファイルとして処理します。これは、-a オプションと同等です。
type が binary の場合、grep は -z オプションがなくても、非テキストバイトを行末文字として扱う場合があります。つまり、binary と text のどちらを選択するかによって、パターンがファイルに一致するかどうかが変わる可能性があります。たとえば、type が binary の場合、パターン q$ は q の直後に null バイトが続く場合に一致する可能性がありますが、type が text の場合は一致しません。逆に、type が binary の場合、パターン . (ピリオド) は null バイトに一致しない場合があります。
警告: -a オプションはバイナリゴミを出力する可能性があり、これは出力がターミナルであり、ターミナルドライバがその一部をコマンドとして解釈する場合、不快な副作用を引き起こす可能性があります。一方、テキストエンコーディングが不明なファイルを読み取る場合は、-a を使用するか、環境で LC_ALL='C' を設定すると、直接表示するのに安全でない場合でも、より多くのマッチを見つけるのに役立ちます。
-D ACTION, --devices=ACTION
入力ファイルがデバイス、FIFO、またはソケットの場合、ACTION を使用して処理します。デフォルトでは、ACTION は read であり、これはデバイスが通常のファイルと同様に読み取られることを意味します。ACTION が skip の場合、デバイスはサイレントにスキップされます。
-d ACTION, --directories=ACTION
入力ファイルがディレクトリの場合、ACTION を使用して処理します。デフォルトでは、ACTION は read であり、これはディレクトリが通常のファイルと同様に読み取られることを意味します。ACTION が skip の場合、ディレクトリはサイレントにスキップされます。ACTION が recurse の場合、各ディレクトリの下のすべてのファイルを再帰的に読み取り、シンボリックリンクはコマンドラインにある場合にのみ追跡します。これは、-r オプションと同等です。
--exclude=GLOB
コマンドラインファイルの名前の接尾辞がパターン GLOB に一致する場合、そのファイルをスキップします。名前の接尾辞は、ファイル全体、またはスラッシュ (/) の後の非スラッシュ文字で始まる後続部分です。再帰的に検索する場合、ベース名 (最後のスラッシュの後の部分) が GLOB に一致するすべてのサブファイルをスキップします。パターンは、*, ?, および [] をワイルドカードとして使用でき、\ を使用してワイルドカードまたはバックスラッシュ文字をリテラルに引用できます。
--exclude-from=FILE
ベース名が FILE から読み込まれたファイル名グロブのいずれかと一致するファイルをスキップします(ワイルドカードマッチングは、--exclude の項で説明されているように使用されます)。
--exclude-dir=GLOB
コマンドラインのディレクトリ名がパターン GLOB と一致する場合、または再帰的に検索するときに、ベース名が GLOB と一致するサブディレクトリをスキップします。GLOB の末尾にある冗長なスラッシュは無視されます。
-I
一致するデータを含むファイルを含むようにバイナリファイルを処理します。これは、--binary-files=without-match オプションと同等です。
--include=GLOB
ベース名が GLOB と一致するファイルのみを検索します(ワイルドカードマッチングは、--exclude の項で説明されているように使用されます)。矛盾する --include オプションと --exclude オプションが与えられた場合、最後に一致したものが優先されます。--include または --exclude オプションのいずれにも一致しない場合、ファイルは含まれます。ただし、最初のオプションが --include の場合を除きます。
-r, --recursive
各ディレクトリの下にあるすべてのファイルを再帰的に読み込み、シンボリックリンクはコマンドラインにある場合にのみたどります。ファイルオペランドが指定されていない場合、grep は作業ディレクトリを検索します。これは、-d recurse オプションと同等です。
-R, --dereference-recursive
各ディレクトリの下にあるすべてのファイルを再帰的に読み込みます。すべてのシンボリックリンクをたどります(-r とは異なります)。
その他のオプション
--line-buffered
出力を行バッファリングします。これにより、パフォーマンスが低下する可能性があります。
-U, --binary
ファイルをバイナリとして扱います。デフォルトでは、MS-DOS および MS-Windows では、grep はファイルがテキストファイルかバイナリファイルかを --binary-files オプションで説明されているように推測します。grep がファイルをテキストファイルと判断した場合、CR 文字を元のファイルの内容から削除します(^ および $ を使用した正規表現が正しく機能するようにするため)。-U を指定すると、この推測がオーバーライドされ、すべてのファイルが変更されずに読み取られ、マッチングメカニズムに渡されます。ファイルが各行の最後に CR/LF ペアを持つテキストファイルの場合、一部の正規表現が失敗する可能性があります。このオプションは、MS-DOS および MS-Windows 以外のプラットフォームでは効果がありません。
-z, --null-data
入力データと出力データを、各行がゼロバイト(ASCII NUL 文字)で終了するシーケンスとして扱います。-Z または --null オプションと同様に、このオプションを使用して、sort -z などのコマンドで任意のファイル名を処理できます。
正規表現
正規表現は、文字列のセットを記述するパターンです。正規表現は、小さい式をさまざまな演算子を使用して組み合わせることによって、算術式と同様に構築されます。
grep は、3 つの異なる正規表現構文を理解しています。「基本」(BRE)、「拡張」(ERE)、および「Perl」(PCRE)。GNU grep では、基本正規表現と拡張正規表現は、単に同じパターンマッチング機能の異なる表記法です。他の実装では、基本正規表現は通常、拡張よりも強力ではありませんが、場合によっては逆になることもあります。以下の説明は、拡張正規表現に適用されます。基本正規表現の要約は後述します。Perl 互換の正規表現は、異なる機能を持っており、pcre2syntax(3) および pcre2pattern(3) に記載されていますが、PCRE サポートが有効になっている場合にのみ機能します。
基本的な構成要素は、1つの文字にマッチする正規表現です。 ほとんどの文字(すべての文字と数字を含む)は、それ自体にマッチする正規表現です。 特殊な意味を持つメタ文字は、その前にバックスラッシュを付けて引用することで、その意味を打ち消すことができます。
ピリオド . は、任意の1つの文字にマッチします。 エンコーディングエラーにもマッチするかどうかは不明です。
文字クラスとブラケット式
ブラケット式は、[ と ] で囲まれた文字のリストです。 リスト内の任意の1つの文字にマッチします。 リストの最初の文字がキャレット ^ である場合、リストにない任意の文字にマッチします。 エンコーディングエラーにもマッチするかどうかは不明です。 たとえば、正規表現 [0123456789] は、任意の1つの数字にマッチします。
ブラケット式内では、範囲式はハイフンで区切られた2つの文字で構成されます。 デフォルトのCロケールでは、これはASCII順序で2つの文字の間に現れる任意の1つの文字にマッチします。 たとえば、[a-d] は [abcd] と同等です。 他のロケールでは、動作は不明です。 [a-d] は [abcd]、[aBbCcDd]、または他のブラケット式と同等になる場合や、どの文字にもマッチしない場合、マッチする文字のセットが不安定になる場合、または無効になる場合があります。 ブラケット式の従来の意味を得るには、環境変数 LC_ALL を値 C に設定して、Cロケールを使用できます。
最後に、ブラケット式内で、名前付きの文字クラスが事前に定義されています。 それらの名前は自明であり、[:alnum:]、[:alpha:]、[:blank:]、[:cntrl:]、[:digit:]、[:graph:]、[:lower:]、[:print:]、[:punct:]、[:space:]、[:upper:]、および [:xdigit:] です。 たとえば、[[:alnum:]] は、現在のロケールでの数字と文字の文字クラスを意味します。 CロケールおよびASCII文字セットエンコーディングでは、これは [0-9A-Za-z] と同じです。 (これらのクラス名のブラケットは、シンボリック名の一部であり、ブラケット式を区切るブラケットに加えて含める必要があります。) ほとんどのメタ文字は、ブラケット式内では特別な意味を失います。 リテラルの ] を含めるには、リストの先頭に配置します。 同様に、リテラルの ^ を含めるには、リストの最初の文字ではない任意の場所に配置します。 最後に、リテラルの - を含めるには、リストの最後に配置します。
アンカー
キャレット ^ とドル記号 $ は、それぞれ行の先頭と末尾にある空の文字列にマッチするメタ文字です。
バックスラッシュ文字と特殊表現
シンボル \< と \\> は、それぞれ単語の先頭と末尾にある空の文字列にマッチします。 シンボル \b は、単語の端にある空の文字列にマッチし、\B は、単語の端にない場合に空の文字列にマッチします。 シンボル \w は、[_[:alnum:]] の同義語であり、\W は [^_[:alnum:]] の同義語です。
反復
正規表現の後に、次の反復演算子のいずれかを続けることができます。 ? 直前の項目はオプションであり、最大 1 回だけ一致します。 * 直前の項目は 0 回以上一致します。 + 直前の項目は 1 回以上一致します。 {n} 直前の項目は正確に n 回一致します。 {n,} 直前の項目は n 回以上一致します。 {,m} 直前の項目は最大 m 回一致します。これは GNU 拡張です。 {n,m} 直前の項目は少なくとも n 回、ただし最大 m 回一致します。
連結
2 つの正規表現を連結できます。結果として得られる正規表現は、連結された表現にそれぞれ一致する 2 つのサブ文字列を連結して形成された文字列に一致します。
代替
2 つの正規表現をインフィックス演算子 | で結合できます。結果として得られる正規表現は、いずれかの代替表現に一致する文字列に一致します。
優先順位
反復は、連結よりも優先され、連結は代替よりも優先されます。 括弧で囲まれた式全体を使用すると、これらの優先順位ルールをオーバーライドして、サブ式を形成できます。
バック参照とサブ表現
バック参照 \n (n は 1 桁の数字) は、正規表現の n 番目の括弧で囲まれたサブ表現によって以前に一致したサブ文字列に一致します。
基本正規表現と拡張正規表現
基本正規表現では、メタ文字 ?, +, {, |, (, ) は特殊な意味を失います。代わりに、\?, +, {, |, (, ) を使用します。
終了ステータス
通常、行が選択された場合は終了ステータスは 0、行が選択されなかった場合は 1、エラーが発生した場合は 2 です。ただし、-q または --quiet または --silent が使用され、行が選択された場合、エラーが発生しても終了ステータスは 0 になります。
環境
grep の動作は、次の環境変数によって影響を受けます。
LC_foo カテゴリのロケールは、LC_ALL、LC_foo、LANG の 3 つの環境変数を順番に調べて指定されます。これらの変数のうち、最初に設定されている変数がロケールを指定します。たとえば、LC_ALL が設定されていないが、LC_MESSAGES が pt_BR に設定されている場合、LC_MESSAGES カテゴリにはブラジルポルトガル語のロケールが使用されます。これらの環境変数のいずれも設定されていない場合、またはロケールカタログがインストールされていない場合、または grep がナショナル言語サポート (NLS) を使用してコンパイルされていない場合は、C ロケールが使用されます。シェルコマンド locale -a は、現在利用可能なロケールを一覧表示します。
GREP_COLORS
--color オプションを使用して出力の強調表示を制御します。その値は、コロンで区切られた機能のリストであり、デフォルトは ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36 で、rv および ne のブール値の機能が省略されています (つまり、false)。サポートされている機能は次のとおりです。
sl= SGR 選択された行全体(-vコマンドラインオプションが指定されていない場合はマッチする行、指定されている場合はマッチしない行)の文字列。ただし、ブール型のrv機能と-vコマンドラインオプションの両方が指定されている場合は、コンテキストマッチング行に適用されます。デフォルトは空(つまり、端末のデフォルトカラーペア)です。
cx= SGR コンテキスト行全体(-vコマンドラインオプションが指定されていない場合はマッチしない行、指定されている場合はマッチする行)の文字列。ただし、ブール型のrv機能と-vコマンドラインオプションの両方が指定されている場合は、選択されたマッチングしない行に適用されます。デフォルトは空(つまり、端末のデフォルトカラーペア)です。
rv ブール値。-vコマンドラインオプションが指定されている場合に、sl=とcx=の機能の意味を反転(入れ替え)します。デフォルトはfalse(つまり、機能は省略されます)。
mt=01;31
SGR マッチングする行内のマッチングする空でないテキスト(-vコマンドラインオプションが指定されていない場合は選択された行、指定されている場合はコンテキスト行)の文字列。これを設定することは、ms=とmc=を同時に同じ値に設定するのと同じです。デフォルトは、現在の行の背景色の上の太字の赤いテキストのフォアグラウンドです。
ms=01;31
SGR 選択された行内のマッチングする空でないテキストの文字列。(これは-vコマンドラインオプションが指定されていない場合にのみ使用されます)。sl=(またはrvの場合はcx=)の機能の効果は、これが有効になったときに維持されます。デフォルトは、現在の行の背景色の上の太字の赤いテキストのフォアグラウンドです。
mc=01;31
SGR コンテキスト行内のマッチングする空でないテキストの文字列。(これは-vコマンドラインオプションが指定されている場合にのみ使用されます)。cx=(またはrvの場合はsl=)の機能の効果は、これが有効になったときに維持されます。デフォルトは、現在の行の背景色の上の太字の赤いテキストのフォアグラウンドです。
fn=35 SGR コンテンツ行の先頭に表示されるファイル名の文字列。デフォルトは、現在の端末のデフォルトの背景色の上のマゼンタ色のテキストのフォアグラウンドです。
ln=32 SGR コンテンツ行の先頭に表示される行番号の文字列。デフォルトは、現在の端末のデフォルトの背景色の上の緑色のテキストのフォアグラウンドです。
bn=32 SGR コンテンツ行の先頭に表示されるバイトオフセットの文字列。デフォルトは、現在の端末のデフォルトの背景色の上の緑色のテキストのフォアグラウンドです。
se=36 SGR 選択された行のフィールド間(:)、コンテキスト行のフィールド間(-)、およびゼロでないコンテキストが指定されている場合に隣接する行のグループ間に挿入されるセパレータの文字列。デフォルトは、現在の端末のデフォルトの背景色の上のシアン色のテキストのフォアグラウンドです。
ne ブール値。各カラー化されたアイテムの最後に、行末までを消去する機能(Erase in Line(EL))を使用しないようにします。これは、ELがサポートされていない端末で必要です。また、back_color_erase(bce)ブール型のターミナル情報機能が適用されない場合、選択したハイライトカラーが行の背景に影響を与えない場合、またはELが遅すぎるか、ちらつきが大きすぎる場合に役立ちます。デフォルトはfalse(つまり、機能は省略されます)。
ブール型機能には、= の部分はありません。デフォルトでは省略され、指定された場合にのみ true になります。
使用するテキストターミナルのドキュメントの「グラフィック表示の選択(SGR)」セクションを参照して、許可されている値とその意味(文字属性)を確認してください。これらのサブ文字列値は10進数で表される整数であり、セミコロンで連結できます。grep は、結果を完全な SGR シーケンス (\33[...m) に組み立てます。連結する一般的な値には、1(太字)、4(下線)、5(点滅)、7(反転)、39(デフォルトの前面色)、30〜37(前面色)、90〜97(16色モードの前面色)、38;5;0〜38;5;255(88色および256色モードの前面色)、49(デフォルトの背景色)、40〜47(背景色)、100〜107(16色モードの背景色)、および 48;5;0〜48;5;255(88色および256色モードの背景色)があります。
^ C_ALL, LC_COLLATE, LANG
これらの変数は、LC_COLLATE カテゴリのロケールを指定します。これは、[a-z] のような範囲式を解釈するために使用される照合順序を決定します。
^ C_ALL, LC_CTYPE, LANG
これらの変数は、LC_CTYPE カテゴリのロケールを指定します。これは、文字のタイプ(どの文字が空白文字であるかなど)を決定します。このカテゴリは、文字エンコーディングも決定します。つまり、テキストが UTF-8、ASCII、または他のエンコーディングでエンコードされているかを決定します。C または POSIX ロケールでは、すべての文字は単一のバイトとしてエンコードされ、すべてのバイトが有効な文字になります。
^ C_ALL, LC_MESSAGES, LANG
これらの変数は、LC_MESSAGES カテゴリのロケールを指定します。これは、grep がメッセージに使用する言語を決定します。デフォルトの C ロケールでは、アメリカ英語のメッセージが使用されます。
^ OSIXLY_CORRECT
設定されている場合、grep は POSIX が要求するように動作します。そうでない場合、grep は他の GNU プログラムのように動作します。POSIX では、ファイル名の後に続くオプションはファイル名として扱われる必要があります。デフォルトでは、このようなオプションはオペランドリストの先頭に移動され、オプションとして扱われます。また、POSIX では、認識されないオプションは「不正」として診断する必要があると規定されていますが、実際には違法ではないため、デフォルトでは「無効」として診断されます。
注意事項
この man ページは、時折しか保守されていません。完全なドキュメントの方が最新であることがよくあります。
著作権
Copyright 1998–2000、2002、2005–2025 Free Software Foundation, Inc.
これはフリーソフトウェアであり、ソースにコピー条件が記載されています。保証はありません。商品性および特定の目的に対する適合性の保証もありません。
バグ
バグの報告
バグ報告は、バグ報告アドレスにメールで送信してください。メールアーカイブとバグトラッカーも利用できます。
既知のバグ
{n,m} 形式で大きな繰り返し回数が使用されると、grep が大量のメモリを使用する可能性があります。さらに、他のいくつかの難解な正規表現では指数関数的な時間とスペースが必要となり、grep がメモリ不足になる可能性があります。
後方参照は非常に遅く、指数関数的な時間が必要になる場合があります。
例
次の例では、「f」を含み、「.c」で終わる行の位置と内容を、現在のディレクトリにある「g」を含み、「.h」で終わるすべてのファイルから出力します。-n オプションは行番号を出力し、-- 引数は「*g*.h」の展開で「-」で始まるものをファイル名として扱い、オプションとしてではなく、空のファイル /dev/null は、ファイル名が「*g*.h」の形式である場合にのみファイル名を出力させます。
$ grep -n -- 'f.*\.c$' *g*.h /dev/null
argmatch.h:1:/* definitions and prototypes for argmatch.c
一致するのは argmatch.h の 1 行目だけです。正規表現の構文は、シェルがファイル名に一致するために使用するグロビング構文とは異なります。
関連項目
正規表現に関するマニュアルページ
awk(1), cmp(1), diff(1), find(1), perl(1), sed(1), sort(1), xargs(1), read(2), pcre2(3), pcre2syntax(3), pcre2pattern(3), terminfo(5), glob(7), regex(7)
完全なドキュメント
完全なマニュアルがあります。info および grep プログラムがサイトに適切にインストールされている場合、次のコマンド
info grep
を使用すると、完全なマニュアルにアクセスできます。