fgrep コマンド

目的

ファイルを検索してリテラル文字列を探します。

構文

fgrep [ -h] [ -i] [ -s] [ -u] [ -v] [ -w ] [ -x] [ -y ] [ [ -b] [ -n] | [ -c | -l | -q ] ] [ -p Separator] {Pattern | -e Pattern | -f StringFile} [File...]

説明

fgrep コマンドは、File パラメーター (デフォルトでは標準入力) で指定された入力ファイルを検索してパターンと一致する行を探します。fgrep コマンドは、特に固定長文字列の Pattern パラメーターを検索します。fgrep コマンドは、 File パラメーターに複数のファイルを指定した場合、一致する行が含まれているファイルを表示します。

fgrep コマンドは、式と一致するパターンを検索するのではなく、 文字列を検索するという点で、grep および egrep コマンドとは 異なります。fgrep コマンドは、高速でコンパクトなアルゴリズムを使用します。 fgrep コマンドでは、$、*、[、|、(、)、および ¥ 文字を 文字どおりに解釈します。これらの文字 ($、*、[、|、(、)、および ¥) は、grep コマンドおよび egrep コマンド内で解釈されるので、正規表現の一部としては解釈されません。これらの文字は、シェルに対して特別な意味があるため、ストリング全体を単一引用符で囲む ('...') 必要があります。ファイルを指定しなければ、fgrep コマンドでは、標準入力を前提とします。 通常、検索された各行は標準出力にコピーされます。 入力ファイルが複数の場合は、ファイル名は検索された各行の前に出力されます。

注:
  1. fgrep コマンドは、 -F フラグを指定した grep コマンドと、 同じ機能を実行しますが、エラー・メッセージと使用方法メッセージ、 および -s フラグの機能が異なります。
  2. 各行は 2048 バイト以内に制限されています。
  3. 現在、 パラグラフ ( -p フラグの指定) の長さは、5000 文字に限定されています。
  4. 予測できない結果を生ずるので、grep コマンドを スペシャル・ファイル上で実行するのは避けてください。
  5. 入力行には、NULL 文字を使用しないでください。
  6. 入力ファイルは、改行文字で終らなければなりません。
  7. 複数のフラグを同時に指定できますが、 フラグの中には他のフラグを指定変更してしまうものがあります。例えば、-l-n を同時に指定すると、ファイル名だけが標準出力に書き出されます。

フラグ

フラグ 説明
-b 各行の前に、その行が見つかったブロック番号を付けます。 このフラグを使用すると、ディスク・ブロック番号をコンテキストで見つけるときに便利です。 -b フラグは、標準入力またはパイプからの入力と一緒には使用できません。
-c 一致した行の数のみを表示します。
-e Pattern パターンを指定します。それは、単純パターンと同じ働きをしますが、パターンが - (ハイフン) で始まる場合に便利です。
-f StringFile 文字列を含むファイルを指定します。
注: 検索パターンを含んでいるファイルを入力に使用して、fgrep (または grep -F) コマンドのパフォーマンスを強化するには、fgrep コマンドを実行する前に、ENABLE_FGREP_AC 環境変数をエクスポートします。例えば、この環境変数をエクスポートするには、次のコマンドを実行することができます。
export ENABLE_FGREP_AC=""
-h 複数のファイルを処理したときに、ファイル名を抑止します。
-i 比較を行うときに、大文字と小文字の区別を無視します。
-l 一致している行のファイルの名前を表示します (1 回)。各ファイルの名前は改行文字で区切られます。
-n 各行の前に、ファイル内におけるその行の相対行番号を付けます。
-p Separator 一致する行を含んでいるパラグラフ全体を表示します。 パラグラフは、Separator パラメーターで指定された、 パラグラフ・セパレーターで区切られます。パラグラフ・セパレーターは検索パターンと同じ書式のパターンです。 パラグラフ・セパレーターを含んでいる行は、セパレーターとしてのみ使用され、出力には含まれません。デフォルトのパラグラフ・セパレーターはブランク行となります。
-q 行の一致に関係なく、標準出力への書き出しをすべて抑止します。入力行を選択すると、終了して状況 0 を戻します。
-s エラー・メッセージだけを表示します。それは、状況を検査するのに便利です。
-u 出力をバッファーしません。
-v 指定されたパターンに一致する行を除くすべての行を表示します。
-w 1 つのワードを検索します。
-x 余分な文字を含まず、パターンと完全に一致する行を表示します。
-y 比較を行うときに、大文字と小文字の区別を無視します。

終了状況

このコマンドは次の終了値を戻します。

項目 説明
0 一致が見つかりました。
1 一致が見つかりませんでした。
>1 構文エラーが見つかったか、(一致が見つかったとしても) ファイルにアクセスできませんでした。

  1. いくつかのファイル内の単純文字列を検索するには、次のように入力します。
    
    fgrep strcpy *.c

    これによって、.c 文字ストリングで終わる名前を持つ現行ディレクトリーにあるすべてのファイル内のストリング strcpy が検索されます。

  2. パターンと一致する行数をカウントするには、次のように入力します。

    fgrep -c “{” pgm.c
    fgrep -c “}” pgm.c

    それによって、左中括弧と右中括弧を含んでいる pgm.c 内の行の数が表示されます。

    C プログラムで、1 行に複数の { (左中括弧) または } (右中括弧) を付けなかった場合、 および左右の中括弧が対応している場合に、正しい条件を満たしていれば 2 つの数字が同じになります。 この数字が同じでない場合には、次のように入力すれば、中括弧を含んでいる行を、ファイル内の順序で表示することができます。

    
    egrep {¥|} pgm.c 
  3. パターンを含むファイル名を表示するには、次のように入力します。

    fgrep -l strcpy *.c

    それによって、.c で終わる現行ディレクトリー内のファイルが検索されて、文字列 strcpy を含んだファイルの名前が表示されます。

ファイル

ファイル 説明
/usr/bin/fgrep fgrep コマンドが入っています。
/bin/fgrep fgrep コマンドへのシンボリック・リンク。