grep
は、1つ以上の入力ファイルで正規表現に一致する行を検索し、一致する各行を標準出力に書き込むことができる強力なコマンドラインツールです。
この記事では、GNU grep
の使用方法を紹介します。 複数の文字列またはパターンを検索します。
Grepの複数のパターン#
GNU grep
Basic、Extended、Perl互換の3つの正規表現構文をサポートします。正規表現タイプが指定されていない場合、grep
検索パターンを基本的な正規表現として解釈します。
複数のパターンを検索するには、OR(交互)演算子を使用します。
代替演算子|
(パイプ)を使用すると、リテラル文字列または式セットである可能性のあるさまざまな一致を指定できます。この演算子は、すべての正規表現演算子の中で最も優先順位が低くなっています。
grep
を使用して複数のパターンを検索するための構文 基本的な正規表現は次のとおりです。
grep 'pattern1\|pattern2' file...
シェルによるメタ文字の解釈と拡張を避けるために、正規表現は常に一重引用符で囲んでください。
基本的な正規表現を使用する場合、メタ文字はリテラル文字として解釈されます。メタ文字の特別な意味を維持するには、バックスラッシュ(\
)でエスケープする必要があります。 )。これが、OR演算子(|
)をエスケープしている理由です。 )スラッシュ付き。
パターンを拡張正規表現として解釈するには、grep
を呼び出します。 -E
(または--extended-regexp
) オプション。拡張正規表現を使用する場合は、|
をエスケープしないでください 演算子:
grep -E 'pattern1|pattern2' file...
正規表現の作成方法の詳細については、記事Grepregexを確認してください。
Grep複数の文字列#
リテラル文字列は最も基本的なパターンです。
次の例では、fatal
という単語のすべての出現箇所を検索しています。 、error
、およびcritical
Nginxログエラーファイル内:
grep 'fatal\|error\|critical' /var/log/nginx/error.log
検索する文字列にスペースが含まれている場合は、二重引用符で囲んでください。
これは、拡張正規表現を使用した同じ例です。これにより、演算子|
をエスケープする必要がなくなります。
grep -E 'fatal|error|critical' /var/log/nginx/error.log
デフォルトでは、grep
大文字と小文字が区別されます。これは、大文字と小文字が別個のものとして扱われることを意味します。
検索時に大文字と小文字を区別しない場合は、grep with
を呼び出します。 -i
オプション(または--ignore-case
):
grep -i 'fatal\|error\|critical' /var/log/nginx/error.log
文字列を検索するときは、grep
文字列が大きな文字列に埋め込まれているすべての行が表示されます。したがって、「エラー」を検索している場合は、grep
また、「エラーなし」や「反テロリスト」など、「エラー」がより大きな単語に埋め込まれている行も印刷されます。
指定された文字列が単語全体(単語以外の文字で囲まれている)である行のみを返すには、-w
を使用します。 (または--word-regexp
)オプション:
grep -w 'fatal\|error\|critical' /var/log/nginx/error.log
単語の文字には、英数字(a-z、A-Z、および0-9)とアンダースコア(_)が含まれます。他のすべての文字は、単語以外の文字と見なされます。
grep
の詳細については オプションについては、記事のGrepコマンドにアクセスしてください。
結論#
grep
の方法を説明しました 複数のパターン、文字列、単語を検索します。
ご質問やご意見がございましたら、お気軽にコメントをお寄せください。