fgrep コマンド

目的

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

構文

fgrep [ -h] [ -i] [ -s] [ -v] [ -w ] [ -x] [ -y ] [ [ -b] [ -n] | [ -c | -l | -q ] ] [ -pSeparator] {Pattern | -ePattern | -fStringFile} [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 文字列を含むファイルを指定します。
-h 複数ファイルの処理中に、ファイル名を抑止します。
-i 比較を行うときに、大文字と小文字の区別を無視します。
-l 一致している行のファイルの名前を表示します (1 回)。各ファイルの名前は改行文字で区切られます。
-n 各行の前に、ファイル内におけるその行の相対行番号を付けます。
-pSeparator 一致する行を含むパラグラフ全体を表示します。パラグラフは、Separator パラメーターで指定された、パラグラフ・セパレーターで区切られます。パラグラフ・セパレーターは検索パターンと同じ書式のパターンです。パラグラフ・セパレーターを含んでいる行は、セパレーターとしてのみ使用され、出力には含まれません。デフォルトのパラグラフ・セパレーターはブランク行となります。
-q 行の一致に関係なく、標準出力への書き出しをすべて抑止します。入力行を選択すると、終了して状況 0 を戻します。
-s エラー・メッセージだけを表示します。これは、状況を検査するのに便利です。
-v 指定されたパターンと一致する行を除くすべての行を表示します。
-w ワードの検索を行います。
-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 を含んだファイルの名前が表示されます。

関連情報

egrep コマンド、grep コマンド