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

複数の文字列、パターン、または単語をgrepする方法

はじめに

Grepは、UNIXベースのシステムでデフォルトで使用できる強力なユーティリティです。この名前は、Global RegularExpressionPrintの略です。

grepを使用する この場合、ツールが1つまたは複数のパターンを検索する方法をカスタマイズできます。異なるファイルやディレクトリにある複数の文字列をgrepできます。このツールは、検索パターンとして指定した単語を含むすべての行を印刷します。

このガイドでは、grepを使用して複数の単語や文字列パターンを検索する方法を紹介します。 。このチュートリアルの例に従って、grepを最も効果的に利用する方法を学びます。

前提条件

  • LinuxまたはUNIXライクなシステム
  • 端末またはコマンドラインへのアクセス
  • 必要なファイルとディレクトリにアクセスする権限を持つユーザー

複数のパターンをgrepする方法–構文

ファイル内の複数のパターンを検索する場合の基本的なgrep構文には、 grepの使用が含まれます。 コマンドの後に文字列とファイルの名前またはそのパスが続きます。

パターンは一重引用符で囲み、パイプ記号で区切る必要があります。パイプの前にバックスラッシュを使用する| 正規表現の場合。

grep 'pattern1\|pattern2' fileName_or_filePath

grepを使用する最新の方法は、 -Eを使用することです。 オプション。このオプションは、使用したパターンを拡張正規表現として扱います。 。

grep -E 'pattern1|pattern2' fileName_or_filePath

非推奨バージョンの拡張grep egrepです 。

egrep 'pattern1|pattern2' fileName_or_filePath

もう1つのオプションは、複数の個別のパターンを grepに追加することです。 コマンド。

これを行うには、 -eを使用します フラグを立てて、必要な数の検索パターンを追加し続けます:

grep -e pattern1 -e pattern2 fileName_or_filePath

grep、grep -E、egrepの違いは何ですか?

egrep コマンド 拡張grepの古いバージョンです。 grep -Eと同じ機能を果たします

grepとextendedgrepの違いは、extendedgrepには後で追加されたメタ文字が含まれていることです。

これらの文字は括弧です() 、中括弧 {} 、および疑問符 。パイプ文字| 拡張grepではメタ文字としても扱われます。

複数の文字列、パターン、単語にGrepを使用する例

grepを使用して複数の文字列を検索する方法を確実に理解するために、いくつかの異なるユースケースを試すテキストを含むファイルを作成することをお勧めします。

この例では、ファイルに sample.txtという名前を付けました。 そして、テキストのいくつかの段落を追加しました。 テストのディレクトリにファイルを保存しました ユーザー、つまり /home/test/sample.txt

ファイル内の複数のパターンをgrepする方法

以下の例では、拡張grepの代わりにgrepを使用します。 パイプ文字の前に円記号を使用することを忘れないでください 。

grepはパイプ記号を交互演算子としてサポートしていないため、エスケープ文字(バックスラッシュ\)を使用して grepを指定する必要があります。 パイプを別の方法で処理するコマンド。

たとえば、 extraという単語を検索するには および sample.txt内 ファイルは次のコマンドを使用します:

grep 'extra\|value' sample.txt

出力では、grepしたい文字列が強調表示されます。

同じファイルが別のディレクトリにある場合 、そのディレクトリに移動するか、ファイルのフルパスを使用する必要があります:

grep 'extra\|value' /home/test/Desktop/sample.txt

2つ以上の単語を検索するには 、同じ方法で追加し続けます。

たとえば、3つの単語を検索するには、目的の文字列を追加し、その後に円記号とパイプを追加します。

grep 'extra\|value\|service' sample.txt

grep -Eを使用した場合の上記のgrepコマンドの外観を見てみましょう。 egrep 、および grep -e

grep -E ‘extra|value|service’ sample.txt
egrep ‘extra|value|service’ sample.txt
grep -e extra -e value -e service sample.txt

grepを使用します さらなる例では、ただし、好きな構文を使用できます。

ファイル内の複数の完全一致を検索

複数のパターンに完全に一致するものを見つけたい場合は、 -wを渡します。 grepへのフラグ コマンド。

grep -w 'provide\|count' sample.txt

たとえば、以下の出力は、 -wを使用しない検索の違いを示しています。 そしてそれとともに:

ご覧のとおり、結果は異なります。最初のコマンドは、使用した文字列を含むすべての行を表示します。

2番目のコマンドは、複数の文字列の完全一致をgrepする方法を示しています。出力には、正確な単語を含む行のみが出力されます。

複数の文字列にGrepを使用する場合は大文字と小文字を区別しない

複数のパターンを検索するときに何かを見逃さないようにするには、 -iを使用します 大文字と小文字を無視するフラグ。

たとえば、次のコマンドでは大文字と小文字を区別しません:

grep -i 'phoenix\|linux' sample.txt

出力は、2つのコマンドの違いを示しています。 -iを含める場合 大文字と小文字にフラグを付けて無視すると、複数の一致の結果にすべての一致が含まれます。

このようにして、追加の結果が得られます。 -wも追加する場合 このコマンドにフラグを立てると、結果をさらに絞り込むことができます:

ファイル内の複数の一致の数を表示する

ログファイルを監視していて、警告またはメッセージの数が増えるかどうかを確認したいとします。多数の試合が戻ってきたときに詳細な結果を見たくない場合。

たとえば、 bootstrap.logで複数の一致の数を表示するには ファイルに次のように入力します:

grep -c 'warning\|error' /var/log/bootstrap.log

出力には、一致の数が出力されます。このようにして、警告とエラーの数が増加したかどうかをすばやく判断できます。

特定のファイルタイプの複数のパターンのGrep

grepを使用して、特定のタイプのファイルでのみ複数の文字列を検索できます。 1つのディレクトリ内のログファイルを監視する場合、またはすべてのテキストファイルを検索する場合は、ファイル名の代わりにアスタリスクとファイル拡張子を使用してください。

たとえば、すべての .logで警告とエラーを検索するには / var / log /内のファイル ディレクトリに次のように入力します:

grep 'warning\|error' /var/log/*.log

このオプションがどのように機能するかをわかりやすく示すために、一致の数のみを表示します。

出力には、grepが使用した文字列を検索したすべてのファイルが表示されます。

ファイル内の複数のパターンを再帰的に検索

grep アスタリスクワイルドカードを使用する場合、コマンドは現在のディレクトリのみを検索します。

複数のパターンを検索するときにすべてのサブディレクトリを含めるには、 -Rを追加します grepの演算子:

grep -R 'warning\|error' /var/log/*.log

出力は、すべてのファイルからの結果を返します grep / var / log /にあるコマンド ディレクトリとそのサブディレクトリ。


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

  2. ファイル内の複数の文字列のGrepを実行し、サイズ順にファイルを一覧表示しますか?

  3. 複数のウィンドウのパスワードを入力する方法は?

  1. 複数のpdfファイルの内容を検索するには?

  2. パターンの後にコンテンツをgrepする方法は?

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

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

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

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