本文へスキップ
totonoe

ITを整える

中級

grep・正規表現を整える

= パターンを打つとマッチ箇所がその場で光る、grepの腕試し場

grepを『何となくオプションを付けて使っている』人のための練習場。サンプルテキストにパターンを打つと、マッチ箇所がその場でハイライトされます。-i/-v/-n/-w/-c/-E をトグルすれば、結果とコマンド表示(例:grep -in 'error' access.log)が連動して変わり、そのままコピーできます。入力はこの端末から一切出ません(送信ゼロ)。

🔰 かんたんに言うと

大量の文章から目当ての行だけを探し出す grep と正規表現を、その場で試せます。

i

TLDR — 30秒で分かる

サンプルテキストにパターンを打つとマッチ箇所が即時ハイライト。-i/-v/-n/-w/-c/-E をトグルするとコマンド表示が連動(コピー可)。BRE/EREのエスケープ差の対比表と5問のお題モードつき。

主な機能

  • 3プリセット(アクセスログ風/名簿CSV風/設定ファイル風・編集可)に打つと即時ハイライト
  • -i/-v/-n/-w/-c/-Eをトグルすると結果とコマンド表示が連動、コピーも可
  • 正規表現チートシート(. * ^ $ [] [^])を例つきで解説
  • BREとEREでエスケープの要・不要が入れ替わる記号の対比表
  • 「errorを含む行」「404で終わる行」等5問のお題モード(答え合わせ付き)
  • 送信ゼロ(全てブラウザ内計算)
TRY ① ライブ・プレイグラウンド — 打った瞬間にマッチが光る 入力すると即時に再計算(送信ゼロ)

サンプルテキスト(クリックで切替・自由に編集も可)

オプション(トグルで結果とコマンドが連動)

grep '404' access.log

マッチ 0 / 総 0 行

実行結果

 

注記:本ページの照合はJavaScriptの正規表現(ERE相当)で行っています。-E を外した「BREモード」は近似変換(+ ? | ( ) のエスケープ有無を入れ替える)で本物のgrepのBRE挙動を再現していますが、GNU grep独自拡張の細部までは完全一致を保証しません。

CHEAT SHEET ② 正規表現チートシート
記号 意味 マッチする例
. 任意の1文字 a.c abc, a1c, a-c などにマッチ(aとcの間に何か1文字)
* 直前の文字の0回以上の繰り返し ab*c ac, abc, abbbc にマッチ(bが0回でもOK)
^ 行頭 ^error 行の先頭がerrorで始まる行だけにマッチ
$ 行末 error$ 行の末尾がerrorで終わる行だけにマッチ
[...] 角カッコ内のいずれか1文字 [0-9] 0から9のどれか1文字にマッチ
[^...] 角カッコ内以外の1文字 [^0-9] 数字以外の1文字にマッチ

BRE(デフォルト)と ERE(-E)で、エスケープの要・不要が入れ替わる記号

メタ文字 BRE(grep、-Eなし) ERE(grep -E、egrep)
+(1回以上の繰り返し) \+ とエスケープが必要 + のまま使える
?(0回または1回) \? とエスケープが必要 ? のまま使える
|(OR・論理和) \| とエスケープが必要 | のまま使える
( )(グループ化) \( \) とエスケープが必要 ( ) のまま使える
{ }(回数指定) \{ \} とエスケープが必要 { } のまま使える
. * ^ $ [ ](上記チートシート勢) エスケープ不要(共通) エスケープ不要(共通)

💡 + ? | ( ) はBREでは「エスケープすると特殊な意味を持つ」文字——素のままだとただの文字(リテラル)扱いです。-E を付ける(ERE)と逆に、エスケープなしでそのままメタ文字として働きます。grep -Eegrep はほぼ同じ意味です。

QUIZ ③ お題モード — 自分でパターンを考えてから答え合わせ

問1. (設定ファイル風) error を含む行だけを出す

問2. (Webアクセスログ風) 404 で終わる行だけを出す(ステータスコードが404のアクセスだけ)

問3. (設定ファイル風) 先頭が # でない行だけを出す(コメント行を除外)

問4. (名簿CSV風) 部署が「営業部」の行だけを出す(「総務部」等の他部署を巻き込まない)

問5. (Webアクセスログ風) 200 または 404 のどちらかを含む行を出す(拡張正規表現のOR)

grepの基礎・3つの理解

オプション無しの一歩先へ。

  1. 1

    grep = Global Regular Expression Print

    edエディタの検索コマンド g/re/p(全体から正規表現に一致する行をprintする)に由来する名前で、それがそのまま独立したコマンドになりました。「行単位でパターンに一致する行を探す」という発想の原点です。

  2. 2

    オプション無しのgrepはBRE、-Eを付けるとERE

    BRE(基本正規表現)とERE(拡張正規表現)の違いは、+ ? | ( ) の6記号のエスケープの要・不要だけです(②のチートシート参照)。egrep は grep -E とほぼ同じ、fgrep(grep -F)は正規表現を使わない単純な文字列検索です。

  3. 3

    複数ファイル・再帰検索(-r)はファイル名の扱いが変わる

    grep error *.log のように複数ファイルを渡す、または grep -r error ./logs/ のようにディレクトリを再帰的にたどると、結果の先頭に自動でファイル名が付きます(1ファイルだけのときは付きません)。ファイル名も表示したい/したくないを明示するオプションが -H / -h です。

LPIC/LinuC

grep・正規表現(BRE/ERE、メタ文字、主要オプション)は LPIC-1 / LinuC レベル1 の頻出テーマです。照合と表示の計算はすべてあなたのブラウザの中(純JavaScript)で完結し、入力はサーバへ送信されません(送信ゼロ)。

よくある質問

Q. grepという名前の由来は?

A. 初期のUnixのラインエディタ ed の検索コマンド g/re/p(globalに正規表現reに一致する行をprintする)に由来します。この操作があまりに便利だったため、独立したコマンドとして切り出されたのがgrepです。

Q. -E(拡張正規表現・ERE)とBRE(基本正規表現)の違いは?

A. 違いは + ? | ( ) { } の6記号のエスケープの要・不要だけです。BRE(-Eなし)ではこれらはエスケープ(\+ \? \| など)して初めて特殊な意味を持ち、素のままはただの文字。ERE(-E)では逆にエスケープなしでそのままメタ文字として働きます。egrep は grep -E とほぼ同じ意味です。

Q. 大文字小文字を無視して検索するには?

A. -i オプションを付けます(例:grep -i 'error' access.log)。Error・ERROR・errorのどれにもマッチするようになります。本ツールのオプショントグルでも -i を押すと即座に反映されます。

Q. パターンを含まない行だけを出すには?

A. -v オプションで反転できます(例:grep -v '^#' app.conf でコメント行以外を出す)。「除外条件」を書きたいときの定番です。

Q. 複数ファイルやディレクトリ全体を検索するには?

A. grep error *.log のように複数ファイルを並べる、または -r (再帰)でディレクトリ全体をたどれます(例:grep -r 'error' ./logs/)。複数ファイル・再帰検索では結果の先頭に自動でファイル名が付き、-H で強制表示、-h で非表示にできます。

Q. 正規表現の . と * はそれぞれ何を意味しますか?

A. . は「任意の1文字」、* は「直前の文字の0回以上の繰り返し」を意味します。組み合わせた .* は「何でもいいので0文字以上」という、非常によく使われる表現です。本ツール②のチートシートに他の記号(^ $ [] [^])もまとめています。

Q. このページで入力した内容はどこかに送信されますか?

A. いいえ。サンプルテキストの編集もパターン入力も、すべてこの端末のブラウザ内(JavaScript)だけで処理され、サーバーへの送信は一切ありません(送信ゼロ)。ページを閉じれば内容は残りません。

入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。

RELATED TOOLS

続けて整える

KOINOBORI ECOSYSTEM

私たちが運営するサイト