目次
- パターンマッチとは何か
- grepとは何か
- grep使用の必要性
次の例を考えてみよう(コンピュータ時代ならではの考えであり一読を薦める). これは2001年までに1万冊の本を電子テキスト化し1作あたり1セント,つまり全部で 100ドルの費用で利用できるようにしようとする Project Gutenberg の意図を述べてい る( Michael S. Hart, Director Project Gutenberg National Clearinghouse for Machine Readable Textsによるメッセージから引用). ただし,行番号n: は後からをつけ加えたものである.
1: I have enclosed the following in hopeful anticipation of queries. 2: Please do not hesitate to ask for further information. 3: 4: The purpose of Project Gutenberg is to encourage the creation and 5: distribution of English language electronic texts. We prefer the 6: texts to be made available in pure ASCII formats so they would be 7: most easily converted to use in various hardware and software. A 8: file of this nature will also be made available in various markup 9: formats as it is used in various environments. However we accept 10: files in ANY format, and will do our best to provide them in all. 11: 12: We assist in the selection of hardware and software as well as in 13: their installation and use. We also assist in scanning, spelling 14: checkers, proofreading, etc. Our goal is to provide a collection 15: of 10,000 of the most used books by the year 2001, and to reduce, 16: and we do mean reduce, the effective costs to the user to a price 17: of approximately one cent per book, plus the cost of media and of 18: shipping and handling. Thus we hope the entire cost of libraries 19: of this nature will be about $100 plus the price of the disks and 20: CDROMS and mailing. Currently the price of making CDROMS is said 21: to be about $500 for mastering and then $2 per copy. 22: To create such a library would take less than one out of ten of a 23: conservatively estimated 100,000 libraries in the U.S. alone: if 24: each created one full text. If all the libraries co-operated, it 25: would be less than 10% of a volume per library. If there were 10 26: members of each library creating electronic texts, then each only 27: has to do 1% of a single book to create a truly public library of 28: 10,000 books which would each be usable on any of the 100 million 29: computers we are targeting. 30: 31: So far most electronic text work has been carried out by private, 32: semi-private or incorporated individuals, with several library or 33: college collections being created, but being made mostly from the 34: works entered by individuals on their own time and expense. This 35: labor has largely been either a labor of love, or a labor made by 36: those who see future libraries as computer searchable collections 37: which can be transmitted via disks, phone lines or other media at 38: a fraction of the cost in money, time and paper as in present day 39: paper media. These electronic books will not have to be rebound, 40: reprinted, reshelved, etc. They will not have to be reserved and 41: restricted to use by one patron at a time. All materials will be 42: available to all patrons from all locations at all times. .......
この中で『text』という単語は随所に現れている. たとえば24行目にあるが,5,6行目にある「texts」は『text』とは単語としては別である. ここで,単語(word)の意味をはっきりさせておこう. 次のように定義する.
定義:単語とは,英数字からなる文字列で,その前後を空白文字(スペースやタブ)やコンマ・ピリオドなどの記号で区切られている文字列である.しかし『text』という文字列を含んだパターン/text/を考えた場合,5, 6, 24行目などにある単語は,パターン/text/を含んでいる. パターンが/text/であるとき,文字列「text」,「texts」はそのパターンにマッチするという.
約束:パターン『pattern』を表すときのは,記号『/』で挟んでそのパターンを/string/で表すことにする.もし大文字.小文字を区別しないでパターンを調べることするならば,「Text」, 「Texts」, 「TEXT」, 「TEXTS」などの文字列がマッチすることになる.
実際の情報処理においては,パターンマッチングによる処理(たいていの場合,前処理に過ぎない)がもっとも基本的操作である. パターンの指定には,正規表現(regular expression)が使われる. 正規表現は情報処理においては最重要の概念である.
情報処理関係の中で,grepはもっとも基本的で有用なコマンドである. grepを使って有益なパターンマッチを行うためには,次の点を知っているべきである.
こうして見当をつけた少数のファイル群をcatやページャであるlessやmoreを使ってファイル内容を実際に表示して,目的とするファイルを確定するのである. この際,フィルターの追加
ファイル内容を表示する目的で,エディタを起動すべきではない. 不用意にファイル内容を書き換え,ファイルの`日付'を変更してしまうかもしれないからである. ファイルの日付は情報処理においては,重要な要素の1つだからである.