Linux 正規表現チュートリアル: Grep 正規表現の例
⚡ スマートサマリー
Linuxの正規表現は、grep、sed、viなどのツール間でデータを検索し、複雑なパターンに一致させるための特殊な文字シーケンスです。基本形式、間隔形式、拡張形式、および括弧展開形式を使用して、テキストを正確にフィルタリングします。

正規表現は、 Linux テキストツールを使用すると、コンパクトなパターンでデータを照合、フィルタリング、変換できます。このページでは、基本形式、間隔形式、拡張形式、および括弧展開について、grepの具体的な例を交えて説明します。
Linux の正規表現とは何ですか?
Linuxの正規表現は、データの検索や複雑なパターンのマッチングに役立つ特殊文字です。正規表現は「regexp」または「regex」と略されます。多くのLinuxプログラムで使用されています。 grepbash、rename、sedなど。
正規表現の種類
理解を容易にするため、正規表現の種類を一つずつ見ていきましょう。このページでは、基本正規表現、区間正規表現、拡張正規表現について解説し、最後に中括弧展開について説明します。
基本的な正規表現
正規表現でよく使われるコマンドには、tr、sed、 vi、そしてgrep。以下の表に、基本的な正規表現の一部を示します。
| シンボル | 詳細説明 |
|---|---|
| . | 任意の文字を置き換えます |
| ^ | 文字列の先頭に一致します |
| $ | 文字列の末尾に一致します |
| * | 直前の文字と0回以上一致する |
| \ | 特殊キャラクターを表す |
| () | グループ正規表現 |
| ? | ちょうど1文字に一致する |
具体例を見てみましょう。まず、以下に示すように、cat sampleコマンドを実行して、既存のファイルの内容を表示します。
次に、「a」という文字を含むコンテンツを検索します。下のスクリーンショットは、grepコマンドが「a」を含むすべての行を返す様子を示しています。
キャレット「^」は文字列の先頭に一致します。以下の例では、文字「a」で始まるコンテンツを検索します。
文字「a」で始まる行のみがフィルタリングされます。先頭に文字「a」が含まれていない行は無視されます。
別の例を見てみましょう。下のスクリーンショットは、行末でフィルタリングする前のサンプルファイルの内容を示しています。
以下に示すように、「$」アンカーを使用して、末尾が「t」で終わる行のみを選択します。
間隔の正規表現
これらの式は、文字列中の特定の文字の出現回数を指定します。以下に示します。
| 表現 | 詳細説明 |
|---|---|
| {NS} | 「n」回出現する直前の文字と正確に一致します |
| {n、m} | 「n」回出現する前にある文字と一致しますが、m 回を超えません |
| {n、} | 前の文字が「n」回以上出現する場合にのみ一致します。 |
例えば、「p」という文字を含む行をすべて除外します。下のスクリーンショットは、該当する行を示しています。
次に、文字列中に文字「p」がちょうど2回、連続して出現するかどうかを確認します。構文は次のとおりです。
cat sample | grep -E p\{2}
インターバルマッチの結果は以下のとおりです。
注: これらの正規表現には -E を追加する必要があります。
拡張正規表現
これらの正規表現は、複数の表現を組み合わせたものです。その例をいくつか挙げます。
| 表現 | 詳細説明 |
|---|---|
| \+ | 前の文字の XNUMX つ以上の出現に一致します |
| \? | 前の文字の XNUMX 回または XNUMX 回の出現に一致 |
例えば、「t」という文字が出現する箇所をすべて検索してみましょう。下のスクリーンショットはその結果を示しています。
文字「a」が文字「t」より前に来る行を除外したいとします。その場合は、以下のようなコマンドを使用できます。
cat sample|grep "a\+t"
出力結果は以下のスクリーンショットに示されています。
ブレースの拡張
中括弧展開の構文は、中括弧 '{}' 内に記述された項目のシーケンス、またはカンマで区切られた項目のリストのいずれかです。シーケンスの開始項目と終了項目は、ピリオド '..' で区切られます。
以下にいくつかの例を示します。
上記の例では、echoコマンドはブレース展開を使用して文字列を作成し、単一のパターンから複数の文字列を生成します。










