有名な grep コマンドには 3 つの異なる形式があります。以下のリストでは、ユース ケースも区別しています。
- fgrep :単純なパターンをすばやく検索します。このコマンドを使用すると、ワイルドカード文字を使用せずにパターンをすばやく見つけることができます。通常の単語を検索する場合に便利です。
- grep :通常の正規表現によるパターン検索
- egrep :より強力な拡張正規表現を使用したパターン検索
fgrep (高速 grep) は、1 つまたは複数のファイルを検索して、指定されたテキスト文字列に一致する行を探します。終了ステータスは、一致する行がある場合は 0、一致しない場合は 1、エラーの場合は 2 です。 fgrep は通常の grep 検索よりも高速ですが、柔軟性に欠けます。検索できるのは固定テキストのみで、正規表現は検索できません。
fgrep コマンドは grep と同じですが、正規表現を受け入れる代わりに、改行で区切られた固定文字列のリストを受け入れます。 grep -F と同じです。たとえば、1 行に 1 つずつ、文字列でいっぱいの辞書ファイルがある場合:
# cat my_dictionary_file aardvark aback abandon ...
これらの文字列は、一連の入力ファイルで簡単に検索できます:
# fgrep -f my_dictionary_file inputfile1 inputfile2
通常、小文字の -f オプションを使用して、fgrep にファイルから固定文字列を読み取らせます。引用符を使用してコマンド ラインで固定文字列を読み取ることもできますが、少しトリッキーです。ファイル内の文字列 1、2、3 を検索するには、次のように入力します。
# fgrep 'one ### Note we are typing newline characters two three' myfile
fgrep は、* や { などの英数字以外の文字を検索する場合に便利です。これらの文字は、正規表現の文字としてではなく文字どおりに解釈されるためです。
fgrep コマンドの例
1. PATTERN を拡張正規表現として解釈するには:
# fgrep --extended-regexp PATTERN # fgrep -E PATTERN
2. PATTERN を固定文字列のリストとして解釈するには:
# fgrep -F PATTERN # fgrep --fixed-strings PATTERN
3. PATTERN を基本的な正規表現として解釈するには:
# fgrep -G PATTERN # fgrep --basic-regexp PATTERN
4. PATTERN を Perl 正規表現として解釈するには:
# fgrep -P PATTERN # fgrep --perl-regexp PATTERN
5. パターンとして PATTERN を使用するには:
# fgrep -e PATTERN, # fgrep --regexp=PATTERN
6. FILE からパターンを 1 行に 1 つずつ取得するには:
# fgrep -f FILE, --file=FILE
7. PATTERN ファイルと入力ファイルの両方で大文字と小文字の区別を無視するには:
# fgrep -i PATTERN # fgrep --ignore-case PATTERN
8. 一致の意味を反転し、一致しない行を選択するには:
# fgrep -v PATTERN # fgrep --invert-match PATTERN
9. 単語全体を形成する一致を含む行のみを選択するには:
# fgrep -w PATTERN # fgrep --word-regexp PATTERN
10. 行全体に完全に一致する一致のみを選択するには:
# fgrep -x PATTERN # fgrep --line-regexp PATTERN
11. ケースを無視するには:
# fgrep -y PATTERN
12. 通常の出力を抑制する。代わりに、一致する行の数を出力します:
# fgrep -c PATTERN # fgrep --count PATTERN
13. カラーで表示するには:
# fgrep --color PATTERN
14. 通常の出力を抑制する。代わりに、各入力ファイルの名前を出力します。from out は期待されません:
# fgrep -L PATTERN # fgrep --files-without-match PATTERN
15. 通常の出力を抑制する。代わりに、出力が出力された各入力ファイルの名前を出力します:
# fgrep -l PATTERN # fgrep --files-with-matches PATTERN
16.静かにする;標準出力には何も書き込まないでください。一致するものが見つかった場合は、ステータス 0 ですぐに終了します:
# fgrep -q PATTERN # fgrep --quiet PATTERN # fgrep --silent PATTERN
17. 一致する NUM 行後にファイルの読み取りを停止するには:
# fgrep -m NUM PATTERN # fgrep --max-count=NUM PATTERN
18. 一致する行の一致した (空でない) 部分のみを印刷するには:
# fgrep -o PATTERN # fgrep --only-matching PATTERN
19. 存在しない、または読み取れないファイルに関するエラー メッセージを非表示にするには:
# fgrep -s PATTERN # fgrep --no-messages PATTERN
20. 出力の各行の前に、入力ファイル内の 0 ベースのバイト オフセットを出力するには:
# fgrep -b PATTERN # fgrep --byte-offset PATTERN
21. 各試合のファイル名を印刷するには:
# fgrep -H PATTERN # fgrep --with-filename PATTERN
22. 出力時にファイル名のプレフィックスを抑制するには:
# fgrep -h PATTERN # fgrep --no-filename PATTERN
23. 実際には標準入力からの入力を、ファイル LABEL からの入力として表示するには:
# fgrep -cd PATTERN | fgrep --label=mysearch -H PATTERN
24. 入力ファイル内で、出力の各行の前に 1 から始まる行番号を付けるには:
# fgrep -n PATTERN # fgrep --line-number PATTERN
25. 実際の行コンテンツの最初の文字がタブ位置にあることを確認するには:
# fgrep -T PATTERN # fgrep --initial-tab PATTERN
26. Unix スタイルのバイト オフセットを報告するには:
# fgrep -u PATTERN # fgrep --unix-byte-offsets PATTERN
27. 通常ファイル名に続く文字の代わりに 0 バイトを出力するには:
# fgrep -Z PATTERN # fgrep --null PATTERN
28. 一致した行の後に NUM 行の後続コンテキストを出力するには:
# fgrep -A NUM PATTERN # fgrep --after-context=NUM PATTERN
29. 一致する行の前に先頭のコンテキストの NUM 行を印刷するには:
# fgrep -B NUM PATTERN # fgrep --before-context=NUM PATTERN
30. 出力コンテキストの NUM 行を印刷するには:
# fgrep -C NUM PATTERN # fgrep --context=NUM PATTERN
31. バイナリ ファイルをテキストのように処理するには:
# fgrep -a PATTERN /tmp/bin # fgrep -text PATTERN /tmp/bin
32. ファイルのタイプが TYPE であると仮定するには:
# fgrep --binary-files=TYPE PATTERN
33. 入力ファイルがデバイス、FIFO、またはソケットの場合は、ACTION を使用して処理します:
# fgrep -D ACTION PATTERN # fgrep --devices=ACTION PATTERN
34. 入力ファイルがディレクトリの場合は、ACTION を使用して処理します:
# fgrep -d ACTION PATTERN # fgrep --directories=ACTION PATTERN
35. ベース名が GLOB に一致するファイルをスキップするには:
# fgrep --exclude=GLOB PATTERN
36. ベース名が FILE から読み取ったファイル名グロブのいずれかと一致するファイルをスキップするには:
# fgrep --exclude-from=FILE PATTERN
37. 再帰検索からパターン DIR に一致するディレクトリを除外するには:
# fgrep --exclude-dir=DIR PATTERN
38. 一致するデータが含まれていないかのようにバイナリ ファイルを処理するには:
# fgrep -I PATTERN
39. ベース名が GLOB に一致するファイルのみを検索するには:
# fgrep --include=GLOB
40. 各ディレクトリの下にあるすべてのファイルを再帰的に読み取るには:
# fgrep -r PATTERN # fgrep -R PATTERN
41. 出力で行バッファリングを使用するには:
# fgrep --line-buffered PATTERN
42. 可能であれば、デフォルトの読み取りではなく、mmap システム コールを使用して入力を読み取ります:
# fgrep --mmap PATTERN
43. ファイルをバイナリとして扱うには:
# fgrep -U /tmp/file PATTERN # fgrep --binary /tmp/file PATTERN
44. 入力を一連の行として扱うには:
# fgrep -z PATTERN # fgrep --null-data PATTERN
45. ヘルプを表示するには:
# fgrep -h
46. grep のバージョン番号を出力するには:
# fgrep -V