【Linux】拡張正規表現の使い方|grep・egrepで使えるメタ文字を解説

Linux

どーも!marusukeです!

この記事では

  • 拡張正規表現でできること
  • 拡張正規表現の使用例
  • 拡張正規表現で使えるメタ文字

をわかりやすく解説します!

※拡張正規表現は主に grep -Eegrep で使用できます。

拡張正規表現でできること

grep -E "パターン" ファイル名

拡張正規表現(Extended Regular Expression)は、
文字列の検索パターンを柔軟に表現するための仕組みです。

Linuxでは grep コマンドでよく使用され、
ログ解析やテキスト処理で非常に便利です。

例えば次のようなことができます。

  • 複数の文字列をOR検索する
  • 繰り返し回数を指定する
  • 特定の文字列パターンをまとめて検索する

基本的には以下のコマンドで使用します。

grep -E "正規表現" ファイル

また、egrep コマンドも同じ機能です。

egrep "正規表現" ファイル

※最近は grep -E を使うのが一般的です。

用語解説:正規表現

文字列の検索パターンを表現するための記法。
特定の文字列だけでなく、条件に一致する文字列を柔軟に検索できる仕組みです。


拡張正規表現の使用例

grep -E "error|warning" log.txt

error: file not found
warning: disk space low

この例では error または warning を検索しています。

|OR条件 を表すメタ文字です。

つまり

error OR warning

に一致する行が表示されます。

ログファイルの解析などでよく使われる検索方法です。


拡張正規表現のオプション(メタ文字)

拡張正規表現では、以下のメタ文字を使用できます。

メタ文字意味
``OR条件
()グループ化`(cat
?0回または1回colou?r
+1回以上繰り返すgo+gle
*0回以上繰り返すab*
{n}n回繰り返すa{3}
{n,m}n〜m回繰り返すa{2,5}

OR検索

grep -E "cat|dog" animals.txt

cat または dog を検索します。


繰り返し指定

grep -E "go+gle" test.txt

以下のような文字列にマッチします。

gogle
google
gooogle

o が1回以上繰り返されているパターンです。


グループ化

grep -E "(jpg|png)$" files.txt

拡張子が jpg または png の行を検索できます。


回数指定

grep -E "a{3}" test.txt

a3回連続している文字列に一致します。

aaa
baaa

拡張正規表現と基本正規表現の違い

grep の通常モードは 基本正規表現(BRE) です。

しかし拡張正規表現では、以下のように
バックスラッシュ無しでメタ文字を使えるのが特徴です。

基本正規表現拡張正規表現
( )()
||
++

そのため grep -E の方が書きやすいというメリットがあります。


まとめ

拡張正規表現は、Linuxでのテキスト検索を強力にする仕組みです。

よく使うポイントは次の3つです。

  • | → OR検索
  • () → グループ化
  • + * ? {} → 繰り返し指定

ログ解析・ファイル検索・テキスト処理など
Linuxエンジニアには必須の知識なので、ぜひ覚えておきましょう!

以上です!
ここまで読んでいただきありがとうございました!

コメント

タイトルとURLをコピーしました