ITを整える
中級grep・正規表現を整える。
= パターンを打つとマッチ箇所がその場で光る、grepの腕試し場
grepを『何となくオプションを付けて使っている』人のための練習場。サンプルテキストにパターンを打つと、マッチ箇所がその場でハイライトされます。-i/-v/-n/-w/-c/-E をトグルすれば、結果とコマンド表示(例:grep -in 'error' access.log)が連動して変わり、そのままコピーできます。入力はこの端末から一切出ません(送信ゼロ)。
🔰 かんたんに言うと
大量の文章から目当ての行だけを探し出す grep と正規表現を、その場で試せます。
TLDR — 30秒で分かる
サンプルテキストにパターンを打つとマッチ箇所が即時ハイライト。-i/-v/-n/-w/-c/-E をトグルするとコマンド表示が連動(コピー可)。BRE/EREのエスケープ差の対比表と5問のお題モードつき。
主な機能
- 3プリセット(アクセスログ風/名簿CSV風/設定ファイル風・編集可)に打つと即時ハイライト
- -i/-v/-n/-w/-c/-Eをトグルすると結果とコマンド表示が連動、コピーも可
- 正規表現チートシート(. * ^ $ [] [^])を例つきで解説
- BREとEREでエスケープの要・不要が入れ替わる記号の対比表
- 「errorを含む行」「404で終わる行」等5問のお題モード(答え合わせ付き)
- 送信ゼロ(全てブラウザ内計算)
サンプルテキスト(クリックで切替・自由に編集も可)
オプション(トグルで結果とコマンドが連動)
grep '404' access.log マッチ 0 / 総 0 行
実行結果
注記:本ページの照合はJavaScriptの正規表現(ERE相当)で行っています。-E を外した「BREモード」は近似変換(+ ? | ( ) のエスケープ有無を入れ替える)で本物のgrepのBRE挙動を再現していますが、GNU grep独自拡張の細部までは完全一致を保証しません。
| 記号 | 意味 | 例 | マッチする例 |
|---|---|---|---|
| . | 任意の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 -E と egrep はほぼ同じ意味です。
問1. (設定ファイル風) error を含む行だけを出す
問2. (Webアクセスログ風) 404 で終わる行だけを出す(ステータスコードが404のアクセスだけ)
問3. (設定ファイル風) 先頭が # でない行だけを出す(コメント行を除外)
問4. (名簿CSV風) 部署が「営業部」の行だけを出す(「総務部」等の他部署を巻き込まない)
問5. (Webアクセスログ風) 200 または 404 のどちらかを含む行を出す(拡張正規表現のOR)
grepの基礎・3つの理解
オプション無しの一歩先へ。
- 1
grep = Global Regular Expression Print
edエディタの検索コマンド
g/re/p(全体から正規表現に一致する行をprintする)に由来する名前で、それがそのまま独立したコマンドになりました。「行単位でパターンに一致する行を探す」という発想の原点です。 - 2
オプション無しのgrepはBRE、-Eを付けるとERE
BRE(基本正規表現)とERE(拡張正規表現)の違いは、+ ? | ( ) の6記号のエスケープの要・不要だけです(②のチートシート参照)。egrep は grep -E とほぼ同じ、fgrep(grep -F)は正規表現を使わない単純な文字列検索です。
- 3
複数ファイル・再帰検索(-r)はファイル名の扱いが変わる
grep error *.logのように複数ファイルを渡す、またはgrep -r error ./logs/のようにディレクトリを再帰的にたどると、結果の先頭に自動でファイル名が付きます(1ファイルだけのときは付きません)。ファイル名も表示したい/したくないを明示するオプションが-H/-hです。
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
続けて整える