| グレップ | |
|---|---|
grepコマンドの例 | |
| 原作者 | ケン・トンプソン[ 1 ] [ 2 ] |
| 開発者 | AT&Tベル研究所 |
| 初回リリース | 1973年11月[ 1 ] (1973-11) |
| 書かれた | C |
| オペレーティング·システム | Unix、Unixライク、Plan 9、Inferno、OS-9、MSX-DOS、IBM i |
| タイプ | 指示 |
grepは、正規表現に一致する行をテキスト内で検索するコマンドラインユーティリティです。その名前は、同じ効果を持つedコマンド(gグローバル、正規表現、プリント)に由来しています。 [ 3 ] [ 4 ] grepはもともとUnixオペレーティングシステム用に開発され、Unix系システムやOS-9などの他のシステムでも広く利用されています。[ 5 ]このユーティリティを実行するシェルコマンドも同じ名前です。 g/re/pgrep
歴史
grep は、名前が付けられる前は、ケン・トンプソンがファイル内の特定のパターンを検索するために書いたプライベートユーティリティでした。ダグ・マキロイは、その存在を知らず、トンプソンにそのようなプログラムを書くように依頼しました。トンプソンは一晩かけてそのようなユーティリティについて考えますと答え、実際に約1時間かけてバグを修正し、s("search"の略)という自作のプログラムに改良を加えました。翌日、彼はそのプログラムをマキロイに提出し、マキロイはまさに自分が求めていたものだと言いました。トンプソンの記述は、grep が一晩で書かれたという説を説明するかもしれません。[ 6 ]
トンプソンは、リー・E・マクマホンがフェデラリスト論文の本文を分析して個々の論文の著者を特定できるように、PDP-11アセンブリ言語で最初のバージョンを書いた。[ 7 ] edテキストエディタ(これもトンプソンが作成したもの)は正規表現をサポートしていたが、ランダムアクセス編集を可能にするためにファイル全体をメモリにロードしていたため、大量のテキストの検索に使用できなかった。そのため、トンプソンはその正規表現コードをスタンドアロンツールに抜粋し、代わりに任意の長さのファイルをメモリにバッファリングしすぎずに順次処理する。[ 1 ] edでは、コマンド(は一致する正規表現)は、指定されたパターンに一致する行をすべて印刷するので、彼はその名前を選んだ。[ 8 ] [ 9 ] grepはバージョン4 Unixで初めて搭載された。マキロイはgrepが「典型的なソフトウェアツールとして一般的に引用されている」と述べ、 grepがトンプソンのツール哲学をUnixに「取り返しのつかないほど根付かせた」と評価した。[ 10 ]g/re/pre
実装
多くのオペレーティングシステムやソフトウェア開発環境で、さまざまな grep 実装を使用できます。[ 11 ]初期の亜種には、 Unix バージョン 7で導入されたegrepと が含まれます。[ 10 ]この亜種は、 Ken Thompsonによるオリジナルの正規表現実装の後にAlfred Ahoによって追加された拡張正規表現構文をサポートしています。 [ 12 ]この亜種は、Aho–Corasick 文字列マッチングアルゴリズムを使用して、固定文字列のリストのいずれかを検索します。[ 13 ]これらの亜種のバイナリは最新のシステムにも存在し、通常は grep にリンクするか、適切なフラグを追加したシェルスクリプトとして grep を呼び出します (例: )。 コマンドと は、POSIX システムで一般的に導入されており、POSIX 仕様でも広く使用されていると説明されていますが、実際には POSIX の一部ではありません。[ 14 ]fgrepegrepfgrepexecgrep-E"$@"egrepfgrep
他のコマンドには「grep」という単語が含まれており、これらは検索ツールであることを示しています。通常、これらは正規表現の一致に依存します。pgrep例えば、このユーティリティは、指定された正規表現に一致する名前を持つプロセスを表示します。[ 15 ]
Perlプログラミング言語では、grepリスト内から特定のプロパティを満たす要素を検索する組み込み関数です。[ 16 ]この高階関数は、他の言語では通常filterまたは という名前が付けられますwhere。
このコマンドは、 Perlの正規表現pcregrep構文を使用するgrepの実装です。[ 17 ]同様の機能は、フラグを使用してGNUバージョンのgrepで呼び出すことができます。[ 18 ]-P
grepの移植版(例えばCygwinやGnuWin32など)はMicrosoft Windowsでも動作します。Windowsの一部のバージョンでは、同様のコマンドqgrepやfindstrコマンドが提供されています。[ 19 ]
grepコマンドはASCIIのMSX-DOS2 Tools for MSX-DOS version 2にも含まれています。[ 20 ]
grep、、コマンドegrepもIBM ifgrepオペレーティングシステムに移植されています。[ 21 ]
Adobe InDesignソフトウェアには、検索/置換ダイアログボックス[ 23 ]の「GREP」タブにGREP機能があり、InDesign CS4 [ 24 ]で段落スタイル[ 25 ]に「GREPスタイル」が導入されました( CS3バージョン(2007) [ 22 ]以降)。
アグレップ
agrep(近似grep)は、オープンソースの近似文字列マッチングプログラムであり、Udi ManberとSun Wuによって1988年から1991年にかけて開発されました[ 26 ]。Unixオペレーティングシステム用です。後にOS/2、DOS、Windowsに移植されました。
grepはテキストが検索パターンにほぼ一致する場合でも一致します。 [ 27 ]
次の呼び出しでは、netmasksファイル が検索されますmyfileが、置換が 2 つ以下であれば、そこから派生できる他の単語も検索されます。
agrep -2 ネットマスク myfile
この例では、最も近い、つまり置換数が最も少ないものから順に、一致リストを生成します。コマンドフラグは-B「最適」を意味します。
agrep -B ネットマスク myfile
動詞としての使い方
2003年12月、オックスフォード英語辞典オンライン版は「grep」を名詞と動詞の両方として追加しました。[ 28 ]
よく使われる動詞の用法は「You can't grep dead trees(死んだ木をgrepすることはできない)」というフレーズです。これは、grepなどのツールを使えば、ハードコピー(つまり「死んだ木」で作られたもの。この文脈では「紙」の婉曲表現)よりも簡単にデジタルメディアを検索できることを意味します。[ 29 ]
参照
- agrep – 近似文字列マッチングコマンド
- Boyer–Moore 文字列検索アルゴリズム– grep で使用される検索アルゴリズム
- find (Unix) – テキストではなくファイルを検索するUnixコマンド
- find (Windows)またはfindstr – grep と同様にファイル内のテキストを検索する DOS/Windows コマンド
- POSIXコマンドのリスト
- ngrep – ネットワーク grep
- vgrep – 視覚検査を表すユーモラスな用語
参考文献
- ^ a b cカーニハン、ブライアン (1984). Unixプログラミング環境. プレンティス・ホール. pp. 102. ISBN 0-13-937681-X。
- ^「grepは、私が公開する以前、かなり長い間、私だけのプライベートコマンドでした。」 -ケン・トンプソン 2015年5月26日アーカイブ、Wayback Machine、ベンジャミン・ルアルタンザウヴァ著、2014年2月5日公開、Medium
- ^ハウベン、マイケル、ハウベン、ロンダ (1997). 「新世紀に向けたツール構築におけるUnixツールの初期の歴史と影響について」.ネチズン:Usenetとインターネットの歴史と影響について. カリフォルニア州ロサンゼルス:IEEEコンピュータ協会出版. ISBN 978-0-8186-7706-9136ページ:
ある日の午後、ケン・トンプソンに、正規表現認識機能をエディタから取り出して、ワンパスで実行できるプログラムを作ってくれないかと頼みました。彼は快諾してくれました。翌朝、メールにgrepというプログラムの紹介のメモが入っていました。それは見事に動作しました。その奇妙な名前の意味を尋ねると、ケンは「分かりきったことだ」と言いました。それは、シミュレートするエディタコマンド、g/re/p(グローバル正規表現出力)の略語でした。
- ^ Raymond, Eric . 「grep」 . Jargon File . 2006年6月17日時点のオリジナルよりアーカイブ。 2006年6月29日閲覧。
- ^ポール・S・ダヤン (1992). 『OS-9の達人 - 1:事実』 ギャラクティック・インダストリアル・リミテッド. ISBN 0-9519228-0-7。
- ^ VCF East 2019 -- Brian Kernighan interview Ken Thompson (video). YouTube. 2019年5月6日.オリジナルより2021年12月11日時点のアーカイブ。(35分)
- ^ Computerphile、「GREPの起源」 、ブライアン・カーニガン氏へのインタビュー
- ^ "ed regexes" . perl.plover.com . 2017年10月20日時点のオリジナルよりアーカイブ。2018年4月24日閲覧。
- ^ 「Grepの名前の由来」 robots.thoughtbot.com . 2017年8月9日時点のオリジナルよりアーカイブ。2018年4月24日閲覧。
- ^ a b McIlroy, MD (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (技術レポート). CSTR. ベル研究所. 139. 2017年11月11日時点のオリジナルよりアーカイブ(PDF) 。
- ^ Abou-Assaleh, Tony; Wei Ai (2004年3月).グローバル正規表現印刷(GREP)ツールの調査(技術レポート). ダルハウジー大学.
- ^ Hume, Andrew (1988). 「2つのGrepsの物語」.ソフトウェア:実践と経験. 18 (11): 1063. doi : 10.1002/spe.4380181105 . S2CID 6395770 .
- ^ Meurant, Gerard (1990年9月12日).アルゴリズムと複雑性. エルゼビア・サイエンス. p. 278. ISBN 9780080933917. 2016年3月4日時点のオリジナルよりアーカイブ。2015年12月12日閲覧。
- ^ "grep" . www.pubs.opengroup.org . The Open Group. 2015年11月28日時点のオリジナルよりアーカイブ。2015年12月12日閲覧。
- ^ "pgrep(1)" . www.linux.die.net . 2015年12月22日時点のオリジナルよりアーカイブ。2015年12月12日閲覧。
- ^ "grep" . www.perldoc.perl.org . 2015年12月7日時点のオリジナルよりアーカイブ。2015年12月12日閲覧。
- ^ "pcregrep man page" . www.pcre.org . ケンブリッジ大学. 2015年12月23日時点のオリジナルよりアーカイブ。2015年12月12日閲覧。
- ^ "grep(1)" . www.linux.die.net . 2015年12月10日時点のオリジナルよりアーカイブ。2015年12月12日閲覧。
- ^ Spalding , George (2000). Windows 2000 管理. ネットワークプロフェッショナルライブラリ. Osborne/McGraw-Hill. pp. 634. ISBN 978-0-07-882582-8. 2010年12月10日取得.
QGREP.EXE[:] UNIXのgrepに似たツールで、テキスト文字列を検索するために使用できます。
- ^ 「MSX-DOS2ツール ユーザーズマニュアル」(ASCII社) 1993年4月。
- ^ IBM . 「IBM System i バージョン 7.2 プログラミング Qshell」(PDF) . IBM . 2020年9月5日閲覧。
- ^ “Review: Adobe InDesign CS3 - CreativePro.com” . creativepro.com . 2007年4月20日. 2018年1月5日時点のオリジナルよりアーカイブ。 2018年4月24日閲覧。
- ^ 「InDesign ヘルプ: 検索と置換」。2016年8月28日時点のオリジナルよりアーカイブ。2016年8月12日閲覧。
- ^ 「InDesign: GREPスタイル (1) 括弧内のテキストを斜体に設定する」。2017年9月24日時点のオリジナルよりアーカイブ。 2018年1月5日閲覧。
- ^ 「InDesignヘルプ:GREPスタイル」。2016年8月28日時点のオリジナルよりアーカイブ。2016年8月12日閲覧。
- ^ Wu, Sun; Manber, Udi (1992年1月20日~24日). Agrep -- 高速近似パターンマッチングツール. 1992年冬季USENIXカンファレンス. カリフォルニア州サンフランシスコ. CiteSeerX 10.1.1.89.5424 .
- ^ S. Lee Henry (1998年6月). 「適切な検索」. Sun Expert . pp. 35–26 .
- ^ 「2003年12月の新語リスト」オックスフォード英語辞典。2021年12月6日閲覧。
- ^ Jargon File、記事「ドキュメント」
- 注記
- アラン・マグロワール(2000年8月)『Grep:パターンの探索』Iuniverse Inc. ISBN 0-595-10039-2。
- ヒューム、アンドリュー (1988). コリンソン、ピーター (編). 「Grep戦争:戦略的検索イニシアチブ」. EUUG 1988年春季会議議事録. 英国バンティングフォード:ヨーロッパUNIXユーザーグループ: 237–245 .
外部リンク
- GNU Grep 公式サイト
- GNU Grepマニュアル
- – Plan 9プログラマーズマニュアル 第1巻
- – インフェルノ一般コマンドマニュアル
- 「GNU grep が高速な理由」 - GNU grep の作者による実装の詳細。
- コマンドGrep – 25の実用的な例