grepコマンドの例 | |
| 原作者 | ケン・トンプソン[1] [2] |
|---|---|
| 開発者 | AT&T ベル研究所 |
| 初回リリース | 1973年11月[1] |
| 書かれた | C |
| オペレーティング·システム | Unix、Unix ライク、Plan 9、Inferno、OS-9、MSX-DOS、IBM i |
| プラットフォーム | クロスプラットフォーム |
| タイプ | 指示 |
grepは、プレーンテキストデータセットから正規表現に一致する行を検索するためのコマンドラインユーティリティです。その名前は、同じ効果を持つedコマンド(グローバル正規表現検索と印刷)に由来しています。 [3] [4]はもともとUnixオペレーティングシステム用に開発されましたが、後にすべてのUnix系システムやOS-9などの他のシステムでも利用できるようになりました。[5]g/re/p grep
歴史
grep は、名前が付けられる前は、ファイルで特定のパターンを検索するためにKen Thompsonが書いたプライベートなユーティリティでした。Doug McIlroy はその存在を知らず、Thompson にそのようなプログラムを書くように依頼しました。Thompson は、そのようなユーティリティについて一晩考えてみる、と答え、実際にバグを修正し、約 1 時間かけて独自のプログラムs("search" の略) の改良を行いました。翌日、彼はそのプログラムを McIlroy に提示し、McIlroy はそれがまさに自分が求めていたものだと言いました。Thompson の説明は、grep が一晩で書かれたという信念を説明するかもしれません。[6]
トンプソンは、リー・E・マクマホンがフェデラリスト論文のテキストを分析して個々の論文の著者を判別するのを支援するために、 PDP-11 アセンブリ言語で最初のバージョンを書いた。 [7] edテキストエディタ(これもトンプソンが書いた)は正規表現をサポートしていたが、ランダムアクセス編集を可能にするためにファイル全体をメモリにロードしていたため、大量のテキストを検索することができなかった。そこでトンプソンはその正規表現コードをスタンドアロンツールに抜粋し、代わりにメモリにバッファリングしすぎることなく任意の長さのファイルを順番に処理できるようにした。[1] edでは、 g/re/pコマンドは指定されたパターンマッチを含むすべての行を印刷するので、彼はこの名前を選んだ。 [8] [9]はバージョン4 Unixで初めて含まれた。これは「一般的にプロトタイプのソフトウェアツールとして引用されている」と述べ、トンプソンのツール哲学をUnixに「取り返しのつかないほど深く根付かせた」とマキロイは評価した。[10] grepgrep
実装
grep多くのオペレーティングシステムやソフトウェア開発環境で、さまざまな実装が利用可能です。 [11]初期の亜種には、バージョン 7 Unixで導入されたegrepと が含まれます。[10]「 」亜種は、ケン・トンプソンによるオリジナルの正規表現実装の後にアルフレッド・アホによって追加された拡張正規表現構文をサポートします。 [12]「 」亜種は、アホ・コラシック文字列マッチングアルゴリズム を使用して、固定文字列のリストのいずれかを検索します。[13]これらの亜種のバイナリは現代のシステムにも存在し、通常はなどの適切なフラグが追加されたシェルスクリプトとして grep にリンクまたは呼び出します。と は、POSIX システムで一般的に導入されており、POSIX 仕様でも広く存在していると言及されていますが、実際には POSIX の一部ではありません。[14]fgrepegrepfgrepgrepexec grep -E "$@"egrepfgrep
他のコマンドには「grep」という単語が含まれており、検索ツールであることを示しています。通常、正規表現の一致に依存するものですpgrep。たとえば、このユーティリティは、指定された正規表現に一致する名前を持つプロセスを表示します。[15]
Perlプログラミング言語では、grepはリスト内の特定のプロパティを満たす要素を検索する組み込み関数の名前です。[16]この高階関数は通常、他の言語ではfilterまたはという名前が付けられますwhere。
このコマンドはPerl正規表現構文を使用するpcregrepの実装です。[17]同様の機能は、フラグを使用してGNUバージョンので呼び出すことができます。[18]grepgrep-P
の移植版grep(例えばCygwinやGnuWin32内)もMicrosoft Windowsで動作します。Windowsの一部のバージョンでは同様のコマンドqgrepやfindstrコマンドがサポートされています。[19]
コマンドは、 ASCIIのMSX -DOSバージョン2用のMSX-DOS2ツールgrepの一部でもあります。[20]
grep 、egrep、fgrepコマンドもIBM iオペレーティングシステムに移植されています。[21]
Adobe InDesignソフトウェアには、検索/置換ダイアログボックス[23]の「GREP」タブにGREP機能(CS3バージョン(2007)以降[22] )があり、InDesign CS4 [24]で段落スタイル[25]に「GREPスタイル」が導入されました。
同意
grep (近似grep)は、テキストが検索パターンに近似的にしか一致しない場合でも一致します。 [26]
次の呼び出しは、ファイルmyfile内のnetmasks を検索しますが、2 つ以上の置換がない場合、そこから派生できる他の単語も検索します。
agrep -2 ネットマスク myfile
この例では、最も近い、つまり置換が最も少ない一致を最初にリストした一致のリストを生成します。コマンド フラグB は最適を意味します。
agrep -B ネットマスク myfile
動詞としての使い方
2003年12月、オックスフォード英語辞典オンライン版は「grep」を名詞と動詞の両方として追加しました。[27]
一般的な動詞の使用法は「You can't grep dead trees」というフレーズです。grepこれは、ハードコピー(つまり「dead trees」で作られたもの、この文脈では紙の婉曲表現)よりも、などのツールを使ってデジタルメディアを検索する方が簡単であることを意味します。[28]
参照
- ボイヤー・ムーア文字列探索アルゴリズム
- agrep、近似文字列マッチングコマンド
- find (Windows)またはFindstr は、単純な
grep - find (Unix) は、属性でファイルを検索するUnixコマンドであり、
grep - Unixコマンドのリスト
- vgrepまたは「visual
grep」 - ngrep、ネットワーク grep
参考文献
- ^ abc カーニハン、ブライアン (1984)。Unixプログラミング環境。プレンティス ホール。pp. 102。ISBN 0-13-937681-X。
- ^ 「grep は、私が公開する以前から、かなり長い間、私だけのコマンドでした。」 -Ken Thompson 2015-05-26 にWayback Machineでアーカイブ、Benjamin Rualthanzauva 著、2014 年 2 月 5 日公開、Medium
- ^ ハウベン他 1997年、第9章
- ^ Raymond, Eric . 「grep」. Jargon File . 2006-06-17 にオリジナルからアーカイブ。2006-06-29に取得。
- ^ ポール・S・ダヤン(1992年)。OS -9の達人 - 1:事実。ギャラクティック・インダストリアル・リミテッド。ISBN 0-9519228-0-7。
- ^ VCF East 2019 -- Brian Kernighan が Ken Thompson にインタビュー(動画)。YouTube。2019年5月6日。2021年12月11日時点のオリジナルよりアーカイブ。(35分)
- ^ Computerphile、「GREP の起源」 、ブライアン・カーニガンとのインタビュー
- ^ “ed regexes”. perl.plover.com . 2017年10月20日時点のオリジナルよりアーカイブ。2018年4月24日閲覧。
- ^ “How Grep Got its Name”. robots.thoughtbot.com . 2017年8月9日時点のオリジナルよりアーカイブ。2018年4月24日閲覧。
- ^ ab McIlroy, MD (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (技術レポート). CSTR. Bell Labs. 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日). アルゴリズムと複雑性. Elsevier Science. 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 日閲覧。
- ^ 「レビュー: 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 日閲覧。
- ^ 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。
- Hume, Andrew Grep 戦争: 戦略的検索イニシアチブ。Peter Collinson 編著、EUUG Spring 88 Conference Proceedings、237 ~ 245 ページ、Buntingford、英国、1988 年。European UNIX User Group。
- Michael Hauben他 (1997 年 4 月)。Netizens : Usenet とインターネットの歴史と影響について (展望)。Wiley-IEEE Computer Society Press。ISBN 978-0-8186-7706-9。
