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

7 Linux Grep OR、Grep AND、Grep NOT 演算子の例

質問: Unix grep コマンドで OR、AND、および NOT 演算子を使用する方法をいくつかの例を挙げて説明できますか?

答え: grep には、OR および NOT 演算子に相当するオプションがあります。 grep AND 演算子はありません。ただし、パターンを使用して AND をシミュレートできます。以下の例は、Linux の grep コマンドで OR、AND、および NOT を使用する方法を理解するのに役立ちます。

以下の例では、次の employee.txt ファイルが使用されています。

$ cat employee.txt
100  Thomas  Manager    Sales       $5,000
200  Jason   Developer  Technology  $5,500
300  Raj     Sysadmin   Technology  $7,000
400  Nisha   Manager    Marketing   $9,500
500  Randy   Manager    Sales       $6,000

これらの grep コマンドの例に基づいて、grep が非常に強力であることは既にご存じでしょう。

grep OR 演算子

grep OR には、次の 4 つの方法のいずれかを使用します。 grep OR 演算子については、下記の方法 3 をお勧めします。

1. grep または \| を使用

オプションなしで grep コマンドを使用する場合は、\| を使用する必要があります。 or 条件の複数のパターンを分離します。

grep 'pattern1\|pattern2' filename

たとえば、employee.txt ファイルから Tech または Sales を grep します。パイプの前にバック スラッシュがないと、以下は機能しません。

$ grep 'Tech\|Sales' employee.txt
100  Thomas  Manager    Sales       $5,000
200  Jason   Developer  Technology  $5,500
300  Raj     Sysadmin   Technology  $7,000
500  Randy   Manager    Sales       $6,000

2. grep または -E を使用

grep -E オプションは拡張正規表現用です。 -E オプションを指定して grep コマンドを使用する場合は、 | を使用するだけです。 or 条件の複数のパターンを分離します。

grep -E 'pattern1|pattern2' filename

たとえば、employee.txt ファイルから Tech または Sales を grep します。 | を使用するだけです複数の OR パターンを分離します。

$ grep -E 'Tech|Sales' employee.txt
100  Thomas  Manager    Sales       $5,000
200  Jason   Developer  Technology  $5,500
300  Raj     Sysadmin   Technology  $7,000
500  Randy   Manager    Sales       $6,000

3. grep または egrep の使用

egrep は「grep -E」とまったく同じです。そのため、egrep を (オプションなしで) 使用し、 or 条件の複数のパターンを分離します。

egrep 'pattern1|pattern2' filename

たとえば、employee.txt ファイルから Tech または Sales を grep します。 | を使用するだけです複数の OR パターンを分離します。

$ egrep 'Tech|Sales' employee.txt
100  Thomas  Manager    Sales       $5,000
200  Jason   Developer  Technology  $5,500
300  Raj     Sysadmin   Technology  $7,000
500  Randy   Manager    Sales       $6,000

4. grep または grep -e の使用

grep -e オプションを使用すると、1 つのパラメーターのみを渡すことができます。 or 条件に複数のパターンを使用するには、1 つのコマンドで複数の -e オプションを使用します。

grep -e pattern1 -e pattern2 filename

たとえば、employee.txt ファイルから Tech または Sales を grep します。複数の OR パターンには、grep で複数の -e オプションを使用します。

$ grep -e Tech -e Sales employee.txt
100  Thomas  Manager    Sales       $5,000
200  Jason   Developer  Technology  $5,500
300  Raj     Sysadmin   Technology  $7,000
500  Randy   Manager    Sales       $6,000

Grep AND

5. -E ‘pattern1.*pattern2’ を使用して grep AND

grep には AND 演算子はありません。ただし、grep -E オプションを使用して AND をシミュレートできます。

grep -E 'pattern1.*pattern2' filename
grep -E 'pattern1.*pattern2|pattern2.*pattern1' filename

次の例では、「Dev」と「Tech」の両方を (同じ順序で) 含むすべての行を grep します。

$ grep -E 'Dev.*Tech' employee.txt
200  Jason   Developer  Technology  $5,500

次の例では、「Manager」と「Sales」の両方を (任意の順序で) 含むすべての行を grep します。

$ grep -E 'Manager.*Sales|Sales.*Manager' employee.txt

注: 効果的な使い方を知っていれば、grep での正規表現の使用は非常に強力です。

6.複数の grep コマンドを使用した grep AND

パイプで区切られた複数の grep コマンドを使用して、AND シナリオをシミュレートすることもできます。

grep -E 'pattern1' filename | grep -E 'pattern2'

次の例は、同じ行に「Manager」と「Sales」の両方を含むすべての行を grep します。

$ grep Manager employee.txt | grep Sales
100  Thomas  Manager    Sales       $5,000
500  Randy   Manager    Sales       $6,000

Grep NOT

7. grep -v を使用しない grep

grep -v を使用すると、NOT 条件をシミュレートできます。 -v オプションは逆一致用です。つまり、指定されたパターンを除くすべての行に一致します。

grep -v 'pattern1' filename

たとえば、キーワード「Sales」を含む行を除くすべての行を表示します。

$ grep -v Sales employee.txt
200  Jason   Developer  Technology  $5,500
300  Raj     Sysadmin   Technology  $7,000
400  Nisha   Manager    Marketing   $9,500

NOT を他の演算子と組み合わせて、強力な組み合わせを作成することもできます。

たとえば、次の例では、マネージャーまたは開発者が表示されます (ボットはセールスを無視します)。

$ egrep 'Manager|Developer' employee.txt | grep -v Sales
200  Jason   Developer  Technology  $5,500
400  Nisha   Manager    Marketing   $9,500

Linux
  1. Linux nice and reniceコマンドチュートリアル(7例)

  2. Linuxのヘッドコマンドとテールコマンドを例で説明

  3. Linux での mkdir および rmdir コマンドの例

  1. Linux Catコマンド:使用法と例

  2. Linux Sedコマンド:使用法と例

  3. Linux での swapon および swapoff コマンドの例

  1. Linuxコマンド-概要と例

  2. Linux –なぜSuだけでなくSuを使用するのですか?

  3. Linux での grep コマンドの例 (チート シート)