Linuxの正規表現入門|grepとsedで使える基本パターンを初心者向けに解説

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)【Linux入門】初心者のための基礎知識・講座 > Linuxの正規表現入門|grepとsedで使える基本パターンを初心者向けに解説
「grepで検索したのに、思い通りのファイルが見つからない。」
「ログから特定のエラーだけを抽出したいのに、どう書けばいいかわからない。」

Linuxのコマンド操作を覚えた後、次の壁として立ちはだかるのが「正規表現」です。grep・sed・vimなど、Linuxの主要コマンドは正規表現と組み合わせることで劇的に使いやすくなります。

この記事では、正規表現をまったく知らない初心者を対象に、Linuxで実際によく使うパターンを中心に解説します。難しい理論は後回しにして、「このパターンを書けば、こう動く」というイメージを最優先に説明します。

実行環境: Ubuntu 24.04 LTS / Rocky Linux 9.4 で動作確認済み

この記事のポイント

・正規表現は「文字のパターン」を表す書き方で、grep・sed・vimで使える
・ . * ^ $ [ ] の6パターンを覚えるだけで現場の8割はこなせる
・grepに -E をつけると「+」「?」「{n}」などの拡張パターンも使える
・sedコマンドと組み合わせると、ファイル内の文字列を一括置換できる


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

正規表現とは何か

正規表現とは、「文字のパターン(規則)」を表す書き方のことです。

たとえば、メールアドレス・電話番号・特定のエラーメッセージなど、「こんな形をしている文字列を探したい」という要求に応えるのが正規表現です。

Linuxで正規表現がよく使われる場面は主に以下の3つです。

grep:ファイルや標準入力から、特定パターンにマッチする行を検索する
sed:ファイルの中の特定パターンを別の文字列に置換する
vim:テキストを開いた状態で、パターン検索・置換を行う

最初から全部を覚える必要はありません。「grepで使えるようになる」ことを目標に、少しずつ身につけていくのが現実的です。

よく使う正規表現パターン6つ

Linuxのコマンド操作で頻出するパターンを6つに絞って紹介します。まずはこれだけ覚えておけば十分です。

パターン 意味 使用例
.(ドット) 任意の1文字にマッチ c.t → cat, cut, cotなど
*(アスタリスク) 直前の文字の0回以上の繰り返し er*or → eor, error, errrrorなど
^(キャレット) 行の先頭にマッチ ^ERROR → ERRORで始まる行
$(ドル記号) 行の末尾にマッチ done$ → doneで終わる行
[ ](角括弧) 括弧内のどれか1文字にマッチ [aeiou] → 母音1文字のどれか
[^ ](否定) 括弧内の文字以外の1文字 [^0-9] → 数字以外の1文字

grepで正規表現を使う

1. 基本の使い方

grepはファイルの中から、指定したパターンにマッチする行を表示します。

# 基本構文 grep '検索パターン' ファイル名 # 例: /var/log/syslogから「error」を含む行を表示 grep 'error' /var/log/syslog # 例: 大文字小文字を区別しない(-i オプション) grep -i 'error' /var/log/syslog

2. 行頭・行末のパターン

ログファイルで「ERRORから始まる行だけ」を抽出したいケースはよくあります。

# 「ERROR」で始まる行だけを表示(^は行頭を意味する) grep '^ERROR' app.log # 「OK」で終わる行だけを表示($は行末を意味する) grep 'OK$' result.txt # 実際の出力例(app.log の内容から) # ERROR: Connection refused at 14:32:01 # ERROR: Timeout exceeded at 15:00:08

3. 任意の文字を表す「.」と「*」

ドットとアスタリスクは組み合わせて使うことが多いです。

# 「er」と「or」の間に何かある単語を検索(.は任意の1文字) grep 'er.or' /var/log/messages # 「error」の「r」が何個あっても検索(*は0回以上の繰り返し) grep 'er*or' /var/log/messages # 「.*」(ドット+アスタリスク)は「何でもいい、何文字でもいい」を意味する # 「2026」で始まり「ERROR」で終わる行を表示 grep '^2026.*ERROR$' app.log

ポイントは「`.*`」の組み合わせです。「なんでもいい文字列」を表したいときに使います。

4. 文字クラス「[ ]」の使い方

角括弧の中に「どれか1文字」を指定できます。

# 「cat」か「cut」か「cot」を検索 grep 'c[auo]t' animals.txt # 「0」から「9」の数字が含まれる行を検索 grep '[0-9]' config.txt # 数字以外の文字が含まれる行を検索(^は「否定」) grep '[^0-9]' numbers.txt # 「a」から「z」の小文字が含まれる行を検索 grep '[a-z]' logfile.txt

5. 拡張正規表現(grep -E)

grepに `-E` オプションをつけると、さらに便利なパターンが使えます。

パターン 意味 使用例
+ 直前の文字の1回以上の繰り返し er+or → error, errrrorなど(eorは含まない)
? 直前の文字の0回か1回 colou?r → color, colour両方
{n} 直前の文字のちょうどn回の繰り返し [0-9]{3} → 3桁の数字
| または(どちらかにマッチ) error|warning → どちらかを含む行

# 「error」か「warning」を含む行を表示 grep -E 'error|warning' /var/log/syslog # 3桁の数字を含む行を表示 grep -E '[0-9]{3}' access.log # 「colour」か「color」両方にマッチ grep -E 'colou?r' document.txt

sedで正規表現を使った一括置換

1. sedの基本構文

sed(ストリームエディタ)は、ファイルの中の文字列を正規表現で検索して置換するコマンドです。

# 基本構文(s/検索パターン/置換後の文字列/フラグ) sed 's/検索/置換/g' ファイル名 # 例: 「error」を「ERROR」に置換して表示(ファイルは変更しない) sed 's/error/ERROR/g' app.log # 「g」フラグをつけると、1行内の全マッチ箇所を置換(なければ最初の1箇所のみ)

2. sedで正規表現パターンを使う

# 行頭の空白(スペースまたはタブ)を削除 sed 's/^[[:space:]]*//' file.txt # 行末の空白を削除 sed 's/[[:space:]]*$//' file.txt # 数字を「N」に置換(ログのタイムスタンプなどを見やすくする際に使用) sed 's/[0-9]/N/g' timestamp.log # 実際の出力例 # 入力: 2026-05-14 ERROR # 出力: NNNN-NN-NN ERROR

3. ファイルを直接書き換える(-i オプション)

sedの出力は、デフォルトでは画面に表示されるだけでファイルは変更されません。ファイル自体を書き換えたいときは `-i` オプションを使います。

# ファイルを直接書き換える(-i オプション) # バックアップなし(注意して使うこと) sed -i 's/oldtext/newtext/g' config.txt # バックアップを.bakとして保存してから書き換える(推奨) sed -i.bak 's/oldtext/newtext/g' config.txt # バックアップファイルが config.txt.bak として作られる

実際のサーバー管理では、設定ファイルを直接書き換えることがよくあります。`-i.bak` でバックアップを作ってから実行する習慣をつけておくと安全です。

実務でよく使う正規表現パターン集

現場で実際に使う場面別のパターンをまとめます。

やりたいこと コマンド例
ERRORで始まる行を抽出 grep '^ERROR' app.log
空白行を除いて表示 grep -v '^$' file.txt
IPアドレスを含む行を検索 grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' file.txt
コメント行(#で始まる)を除いて表示 grep -v '^#' /etc/hosts
errorまたはwarningを含む行を抽出 grep -E 'error|warning' /var/log/syslog
設定ファイルの文字列を一括置換 sed -i.bak 's/旧設定/新設定/g' config.conf
行末の不要な空白を削除 sed -i 's/[[:space:]]*$//' file.txt

トラブルシュート:よくある間違いと対処法

「.」や「*」が思い通りに動かない

正規表現の `.`(ドット)は「任意の1文字」を意味しますが、ファイルパスの `.`(ピリオド)を検索したいときは `\.` とエスケープする必要があります。

# NG: .txt と書くと「何でもいい1文字+txt」にもマッチしてしまう grep '.txt' files.txt # OK: ピリオドそのものを検索したい場合は\でエスケープする grep '\.txt' files.txt

検索パターンに「[」が含まれてエラーになる

角括弧 `[` は正規表現の特殊文字なので、そのまま使うとエラーになります。`\[` とエスケープしてください。

# エラーになる例 grep '[Warning' /var/log/syslog # 正しい例(\でエスケープ) grep '\[Warning' /var/log/syslog

BRE(基本正規表現)とERE(拡張正規表現)の違い

grepには「基本正規表現(BRE)」と「拡張正規表現(ERE)」の2種類があります。

grep(デフォルト):BRE。`+` `?` `|` を使うには `\` でエスケープが必要
grep -E または egrep:ERE。`+` `?` `|` はそのまま使える

# BRE(デフォルト)で「error|warning」を検索する場合(\|と書く) grep 'error\|warning' /var/log/syslog # ERE(-Eオプション)で同じことを検索する場合(こちらが読みやすい) grep -E 'error|warning' /var/log/syslog

初心者のうちは「`+` `?` `|` を使うときは -E をつける」と覚えておけば十分です。

本記事のまとめ

正規表現の基本パターンと、grepおよびsedでの使い方をまとめます。

パターン 意味
. 任意の1文字
* 直前の文字の0回以上の繰り返し
^ 行頭
$ 行末
[abc] a・b・cのどれか1文字
[^abc] a・b・c以外の1文字
+(-Eオプション必須) 直前の文字の1回以上の繰り返し
|(-Eオプション必須) または(OR条件)
まずはgrepの `^` と `$` と `-E` だけ覚えて、ログ調査に使ってみてください。使うたびに自然と身につきます。

正規表現をマスターすると、Linuxのテキスト処理の効率が大幅に上がります。次のステップとして、sedやawkを組み合わせた処理に進むと、さらに実務で役立つスキルが身につきます。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
正規表現をはじめ、grep・sed・vimなどのコマンドを体系的に学びたい方は、ぜひ受け取ってみてください。
無料マニュアルを受け取る >>

関連記事:コマンドをもっと使いこなすために

正規表現の理解が深まったら、次は以下の記事で関連コマンドをさらに掘り下げてみてください。

grepコマンドで文字列を検索する方法|複数ファイルやディレクトリ除外も
vi(vim)で文字列を検索・置換する方法|ハイライトの消し方や次への移動も
findコマンドでファイル・ディレクトリを検索する方法|名前や更新日時で探す
ファイル内の特定文字から始まる文字列を抽出する
ファイル内の特定文字で終わる文字列を抽出する
grepコマンドの検索結果をさらに絞り込む
sedコマンドでファイル内の文字列を置換する

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。