GNU/Linux >> Linux の 問題 >  >> Linux

複数の文字列とパターンをgrepする方法

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の方法を説明しました 複数のパターン、文字列、単語を検索します。

ご質問やご意見がございましたら、お気軽にコメントをお寄せください。


Linux
  1. Linux – Dmesgで何をgrepするかを知る方法は?

  2. ファイル内の複数の文字列を見つける方法は??

  3. 複雑な検索のためにfindとgrepを組み合わせる方法は? (GNU/linux、find、grep)

  1. 複数のユーザーのディレクトリを chown する方法は?

  2. bash スクリプトで unicode を grep する方法

  3. 特定の単語をgrepしてテキストを取得する方法

  1. 自動化のためにAnsibleとanacronを使用する方法

  2. 複数のパターンでGrepを実行する方法は?

  3. `tree`コマンドに複数の無視パターンを指定するにはどうすればよいですか?