Linuxの正規表現を完全解説|grepやsedで使える基本パターンまとめ

Linuxではファイルの中身を検索したり、テキストを置換したりするときに「正規表現」という技術を使います。
この記事では、正規表現とは何か? という基礎から、よく使うパターンの実例付き解説までを、初学者でも理解できるよう丁寧に解説します。


目次

🔍 正規表現とは?

正規表現とは、文字列のパターンを使って検索・抽出・置換をする方法のことです。
Linuxの世界では、以下のようなコマンドでよく使われます:

  • grep:文字列検索
  • sed:置換・編集
  • awk:パターン処理

🧱 正規表現の基本ルール(基本正規表現)

主な記号一覧(grepで使えるもの)

記号意味説明
.任意の1文字b.tbat, bit, but など
*直前の文字の0回以上の繰り返しba*tbt, bat, baaat
^行の先頭^HelloHelloで始まる行
$行の末尾world$worldで終わる行
[]文字クラス[abc]a, b, cのいずれか
[^]否定の文字クラス[^0-9]数字以外の1文字
\エスケープ\..をそのまま使いたいとき

📘 grepで使ってみよう

ファイル内の「cat」「cut」「cot」を検索

grep 'c.t' file.txt

行頭が「The」の行を検索

grep '^The' file.txt

行末が「end」の行を検索

grep 'end$' file.txt

数字のみを含む行を検索(否定パターン)

grep '^[0-9]*$' file.txt

🔧 拡張正規表現(egrepまたはgrep -E)

Linuxでは egrep(または grep -E)で拡張正規表現を使うことができます。

拡張正規表現とは、基本正規表現よりも表現力が高く、より柔軟で複雑なパターン指定ができる正規表現のことです。

記号意味説明
+直前の1回以上の繰り返しa+a, aa, aaa
?直前の0回または1回colou?rcolor, colour
`OR(または)`cat
()グループ化(ab)+ab, abab, ababab

使用例:colorまたはcolour がある行をfile.txt内から検索する

grep -E 'color|colour' file.txt

🔁 sedで使う正規表現

sedは置換に使われるストリームエディタです。

例1:文字列の置換(foo → bar)

sed 's/foo/bar/g' file.txt

例2:先頭に文字を追加

sed 's/^/行頭:/g' file.txt

🎯 よくある正規表現パターン

パターン説明
^[A-Z]大文字で始まる行Hello など
[a-zA-Z0-9]英数字1文字x, 9, Z など
[0-9]{3}数字3桁(拡張正規表現)123, 456
[a-z]+@[a-z]+\.[a-z]+簡易メールアドレスパターンuser@example.com

🚨 注意点

  • grepはデフォルトで基本正規表現を使います。
  • 拡張正規表現を使うときは grep -E または egrep を使います。
  • sedawkでも正規表現が使えますが、細かい文法に違いがあります。

✅ まとめ

正規表現記号意味
.任意の1文字
*直前の文字の0回以上
^ / $行頭 / 行末
[]いずれかの1文字
+直前の1回以上(拡張)
``

✨ 最後に

正規表現は最初こそややこしく感じるかもしれませんが、使いこなせるようになるとLinuxでの検索や自動処理が格段に効率化されます。
何度も手を動かして、「目で見て」「試して」覚えていきましょう!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次