1. 概要

grep は、ファイルの内容全体でパターンを検索するLinuxベースのコマンドラインツールです。 いくつかの特殊文字を含むパターンを検索する場合、期待される検索結果を得るには、組み込みのシェル特性を無効にすることが重要です。

このチュートリアルでは、grep検索パターンで文字通り特殊文字を使用するさまざまな方法について説明します。

2. Linuxの特殊文字

Linuxには、シェルに特定の意味を与える一連の文字があります。たとえば、コメントの場合は#、変数とコマンド置換の場合は二重引用符(“)、変数式の場合は$、バックグラウンドジョブの場合は&です。少し。

次に、チュートリアル全体で使用する例として、employees.csvという名前のCSVファイルを作成しましょう。

tools@sandbox1:~/baeldung$ cat employees.csv
#Name,Age,Team
Mary Smith,45,DevOps
John,"",NetOps
Jane Doe,25,DevOps
James,38,NetOps
Mary Robert,30,SRE
William,"",SRE

この場合、「SRE」または「DevOps」という単語を含む行を検索しています。 続いて、pipe( | )コマンドはOR操作を実行します。

tools@sandbox1:~/baeldung$ grep -E "SRE|DevOps" employees.csv
Mary Smith,45,DevOps
Jane Doe,25,DevOps
Mary Robert,30,SRE
William,"",SRE

二重引用符が付いている行を検索することに関心があるとします。 最初は些細なことだと思うかもしれません。

tools@sandbox1:~/baeldung$ grep -E """ employees.csv
>

ただし、シェルは、検索パターンが不完全であると想定し、二重引用符が閉じられるのを待ちます。

3. 文字通りの特殊文字の使用

上記の場合、固有のシェル解釈なしで文字通り特殊文字を使用したいと思います。 引用とエスケープは、文字通り特殊文字を使用できるようにする2つの方法です。

3.1. 引用

引用すると、特殊文字に対するシェル固有の動作が無効になります。 このメソッドを実装するには、文字の間に一重引用符を使用する必要があります。

その堅牢な機能により、シングルクォートを「ストロングクォート」と呼びますが、ダブルクォートは「ウィーククォート」と言います。

tools@sandbox1:~/baeldung$ grep -E '"' employees.csv
John,"",NetOps
William,"",SRE

3.2. 脱出

一般に、バックスラッシュ( \ )文字は、組み込みのシェル解釈を破棄し、文字通りシンボルを受け入れるようにシェルに指示するためのさらに別のオプションです。

使用法を詳しく見てみましょう。

tools@sandbox1:~/baeldung$ grep -E "\"" employees.csv
John,"",NetOps
William,"",SRE

4. 結論

引用符とエスケープの両方を使用して、特殊文字の組み込みシェル解釈を削除します。

ただし、引用符は、特殊文字の意味をオフにするためにgrepパターン全体に適用するのが最適であり、エスケープは、必要に応じてgrepパターンの特定の部分に実装されます