クイック スタート
チュートリアル
ツール & 言語
リファレンス
書籍 レビュー
正規表現ツール
grep
PowerGREP
RegexBuddy
RegexMagic
汎用アプリケーション
EditPad Lite
EditPad Pro
言語 & ライブラリ
Boost
Delphi
GNU (Linux)
Groovy
Java
JavaScript
.NET
PCRE (C/C++)
PCRE2 (C/C++)
Perl
PHP
POSIX
PowerShell
Python
R
Ruby
std::regex
Tcl
VBScript
Visual Basic 6
wxWidgets
XML Schema
Xojo
XQuery & XPath
XRegExp
データベース
MySQL
Oracle
PostgreSQL
このサイトについて
はじめに
正規表現クイックスタート
正規表現チュートリアル
置換文字列チュートリアル
アプリケーションと言語
正規表現の例
正規表現リファレンス
置換文字列リファレンス
書籍レビュー
印刷用PDF
このサイトについて
RSSフィード & ブログ

grepとは?

grepは1970年代にUNIXの世界で生まれたツールです。ファイルやフォルダ(UNIXではディレクトリ)を検索し、それらのファイル内のどの行が特定の正規表現に一致するかを確認できます。 grepは、ファイル名と行番号、または正規表現に一致した実際の行を出力します。全体的に、どこを探せばよいか実際にはわからなくても、コンピューターのどこにでも保存されている情報を見つけるのに非常に便利なツールです。

grepの使用

次のように入力した場合grep regex *.txtgrepは現在のフォルダ内のすべてのテキストファイルを検索します。ファイル内の各行に正規表現を適用し、一致が見つかった各行を出力(つまり表示)します。これは、grepが本質的に行ベースであることを意味します。正規表現の一致は複数行にまたがることはできません。

コマンドラインで作業するのが好きな場合、従来のgrepツールは多くのタスクを容易にします。すべてのLinuxディストリビューション(フロッピーベースの小さなものを除く)には、デフォルトでgrepのバージョン(通常はGNU grep)がインストールされています。 Microsoft Windowsを使用している場合は、別途ダウンロードしてインストールする必要があります。 Borlandの開発ツールを使用している場合は、BorlandのTurbo GREPが既にインストールされています。

grepは、グロブされたファイルだけでなく、標準入力で提供するものにも対応します。標準入力で使用すると、grepは正規表現に一致する標準入力から読み取るすべての行を出力します。例:Linuxのfindコマンドは、現在のディレクトリをグロブし、見つかったすべてのファイル名を出力するため、find | grep regexは、正規表現に一致するファイル名のみを出力します。

Grepの正規表現エンジン

ほとんどのバージョンのgrepは、このWebサイトの正規表現チュートリアルで説明されている正規表現フレーバーと同様に、正規表現指向のエンジンを使用します。ただし、grepの正規表現フレーバーは非常に限られています。 POSIXシステムでは、POSIX Basic Regular Expressionsを使用します。

grepの拡張バージョンはegrepと呼ばれます。これはテキスト指向エンジンを使用します。 grepもegrepも、遅延反復先読みなどの特別な機能をサポートしておらず、grepとegrepは特定の行で一致が見つかったかどうかを示すだけなので、テキスト指向エンジンの方が高速であるという点を除けば、この区別は重要ではありません。 POSIXシステムでは、egrepはPOSIX Extended Regular Expressionsを使用します。 「拡張」という名前にもかかわらず、egrepはgrepとほぼ同じです。正規表現の構文がわずかに異なり、選択のサポートが追加されますが、後方参照のサポートが失われます。

Linuxで最も一般的なgrepのバージョンであるGNU grepは、テキスト指向エンジンと正規表現指向エンジンの両方を使用します。後方参照を使用すると、正規表現指向エンジンを使用します。それ以外の場合は、より高速なテキスト指向エンジンを使用します。繰り返しになりますが、grepが設計されたタスクでは、これはユーザーにとって重要ではありません。 「grep」コマンドを入力すると、GNU Basic Regular Expressions構文を使用します。「egrep」コマンドを入力すると、GNU Extended Regular Expressions構文を使用します。 GNUバージョンのgrepとegrepには、grepの選択とegrepの後方参照を含め、まったく同じ機能があります。構文がわずかに異なるだけです。

コマンドラインを超えて

コマンドラインでの作業が好きな場合、従来のgrepツールが適しています。しかし、グラフィカルユーザーインターフェイスを使用したい場合は、Windowsおよびその他のプラットフォームで利用できるgrepのようなツールがたくさんあります。お気に入りのソフトウェアダウンロードサイトで「grep」を検索してください。残念ながら、多くのgrepツールにはドキュメントが不十分であり、どの正規表現フレーバーを使用するかを正確に理解する必要があります。 Perl互換であると主張しているからといって、実際そうであるとは限りません。ほぼ完全に互換性があるものもあります(ただし、決して同一ではありません)。しかし、先読みのような高度で非常に便利な構造を使用したい場合、ひどく失敗するものもあります。

際立ったWindowsベースのgrepツールの1つはPowerGREPです。

| クイック スタート | チュートリアル | ツール & 言語 |  | リファレンス | 書籍 レビュー |

| grep | PowerGREP | RegexBuddy | RegexMagic |

| EditPad Lite | EditPad Pro |

| Boost | Delphi | GNU (Linux) | Groovy | Java | JavaScript | .NET | PCRE (C/C++) | PCRE2 (C/C++) | Perl | PHP | POSIX | PowerShell | Python | R | Ruby | std::regex | Tcl | VBScript | Visual Basic 6 | wxWidgets | XML Schema | Xojo | XQuery & XPath | XRegExp |

| MySQL | Oracle | PostgreSQL |