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 コマンドでは、標準入力を前提とします。 通常、検索された各行は標準出力にコピーされます。 入力ファイルが複数の場合は、ファイル名は検索された各行の前に出力されます。
- fgrep コマンドは、 -F フラグを指定した grep コマンドと、 同じ機能を実行しますが、エラー・メッセージと使用方法メッセージ、 および -s フラグの機能が異なります。
- 各行は 2048 バイト以内に制限されています。
- 現在、 パラグラフ ( -p フラグの指定) の長さは、5000 文字に限定されています。
- 予測できない結果を生ずるので、grep コマンドを スペシャル・ファイル上で実行するのは避けてください。
- 入力行には、NULL 文字を使用しないでください。
- 入力ファイルは、改行文字で終らなければなりません。
- 複数のフラグを同時に指定できますが、 フラグの中には他のフラグを指定変更してしまうものがあります。例えば、-l と -n を同時に指定すると、ファイル名だけが標準出力に書き出されます。
フラグ
フラグ | 説明 |
---|---|
-b | 各行の前に、その行が見つかったブロック番号を付けます。 このフラグを使用すると、ディスク・ブロック番号をコンテキストで見つけるときに便利です。 -b フラグは、標準入力またはパイプからの入力と一緒には使用できません。 |
-c | 一致した行の数のみを表示します。 |
-e Pattern | パターンを指定します。それは、単純パターンと同じ働きをしますが、パターンが - (ハイフン) で始まる場合に便利です。 |
-f StringFile | 文字列を含むファイルを指定します。
注: 検索パターンを含んでいるファイルを入力に使用して、fgrep (または grep -F) コマンドのパフォーマンスを強化するには、fgrep コマンドを実行する前に、ENABLE_FGREP_AC 環境変数をエクスポートします。例えば、この環境変数をエクスポートするには、次のコマンドを実行することができます。
|
-h | 複数のファイルを処理したときに、ファイル名を抑止します。 |
-i | 比較を行うときに、大文字と小文字の区別を無視します。 |
-l | 一致している行のファイルの名前を表示します (1 回)。各ファイルの名前は改行文字で区切られます。 |
-n | 各行の前に、ファイル内におけるその行の相対行番号を付けます。 |
-p Separator | 一致する行を含んでいるパラグラフ全体を表示します。 パラグラフは、Separator パラメーターで指定された、 パラグラフ・セパレーターで区切られます。パラグラフ・セパレーターは検索パターンと同じ書式のパターンです。 パラグラフ・セパレーターを含んでいる行は、セパレーターとしてのみ使用され、出力には含まれません。デフォルトのパラグラフ・セパレーターはブランク行となります。 |
-q | 行の一致に関係なく、標準出力への書き出しをすべて抑止します。入力行を選択すると、終了して状況 0 を戻します。 |
-s | エラー・メッセージだけを表示します。それは、状況を検査するのに便利です。 |
-u | 出力をバッファーしません。 |
-v | 指定されたパターンに一致する行を除くすべての行を表示します。 |
-w | 1 つのワードを検索します。 |
-x | 余分な文字を含まず、パターンと完全に一致する行を表示します。 |
-y | 比較を行うときに、大文字と小文字の区別を無視します。 |
終了状況
このコマンドは次の終了値を戻します。
項目 | 説明 |
---|---|
0 | 一致が見つかりました。 |
1 | 一致が見つかりませんでした。 |
>1 | 構文エラーが見つかったか、(一致が見つかったとしても) ファイルにアクセスできませんでした。 |
例
- いくつかのファイル内の単純文字列を検索するには、次のように入力します。
fgrep strcpy *.c
これによって、.c 文字ストリングで終わる名前を持つ現行ディレクトリーにあるすべてのファイル内のストリング strcpy が検索されます。
- パターンと一致する行数をカウントするには、次のように入力します。
それによって、左中括弧と右中括弧を含んでいる pgm.c 内の行の数が表示されます。
C プログラムで、1 行に複数の { (左中括弧) または } (右中括弧) を付けなかった場合、 および左右の中括弧が対応している場合に、正しい条件を満たしていれば 2 つの数字が同じになります。 この数字が同じでない場合には、次のように入力すれば、中括弧を含んでいる行を、ファイル内の順序で表示することができます。
egrep {¥|} pgm.c
- パターンを含むファイル名を表示するには、次のように入力します。
fgrep -l strcpy *.cそれによって、.c で終わる現行ディレクトリー内のファイルが検索されて、文字列 strcpy を含んだファイルの名前が表示されます。
ファイル
ファイル | 説明 |
---|---|
/usr/bin/fgrep | fgrep コマンドが入っています。 |
/bin/fgrep | fgrep コマンドへのシンボリック・リンク。 |