Linuxではファイルの中身を検索したり、テキストを置換したりするときに「正規表現」という技術を使います。
この記事では、正規表現とは何か? という基礎から、よく使うパターンの実例付き解説までを、初学者でも理解できるよう丁寧に解説します。
目次
🔍 正規表現とは?
正規表現とは、文字列のパターンを使って検索・抽出・置換をする方法のことです。
Linuxの世界では、以下のようなコマンドでよく使われます:
grep:文字列検索sed:置換・編集awk:パターン処理
🧱 正規表現の基本ルール(基本正規表現)
主な記号一覧(grepで使えるもの)
| 記号 | 意味 | 例 | 説明 |
|---|---|---|---|
. | 任意の1文字 | b.t | bat, bit, but など |
* | 直前の文字の0回以上の繰り返し | ba*t | bt, bat, baaat |
^ | 行の先頭 | ^Hello | Helloで始まる行 |
$ | 行の末尾 | 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?r | color, 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を使います。 sedやawkでも正規表現が使えますが、細かい文法に違いがあります。
✅ まとめ
| 正規表現記号 | 意味 |
|---|---|
. | 任意の1文字 |
* | 直前の文字の0回以上 |
^ / $ | 行頭 / 行末 |
[] | いずれかの1文字 |
+ | 直前の1回以上(拡張) |
| ` | ` |
✨ 最後に
正規表現は最初こそややこしく感じるかもしれませんが、使いこなせるようになるとLinuxでの検索や自動処理が格段に効率化されます。
何度も手を動かして、「目で見て」「試して」覚えていきましょう!

コメント