lookup“ルーキャプ”【検索】 by フリードル・ジェフリー Friedl, Jeffrey jfriedl@omron.co.jp □━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━□ ┃ ┃ ┃ ★ 目的 : テキストファイルの中の言葉を簡単に速く探すこと。★ ┃ ┃ ‥‥ ‥‥ ┃ □━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━□ ┌──────────────────────────┐ │私の日本語を理解する力が足りないのでお許して下さい。│ ├──────────────────────────┴───────┐ │Lookup の機能はとてもpowerfulですが、日本語の説明書は書きに │ │くい(ジェフリーにとって). 英語の説明書は詳しいので、英語を読める人 │ │はそれを見てください。 │ └──────────────────────────────────┘ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ━━━━━━━━━━━━━━━━━━━━━━━━┓ 応用: edict や /usr/dict/words の中の言葉を引く ┃ ━━━━━━━━━━━━━━━━━━━━━━━━┛ edict はフリー(無料)の英和・和英辞典です。 "edict" というファイルの行は全て以下のフォーマットです。 漢字 [読み方] /英語/英語/.../ とか 仮名 /英語/英語/.../ 例えば: アメリカ /America/ 京 [けい] /10,000,000,000,000,000/ten quadrillion/ 元気 [げんき] /health(y)/robust/vigor/energy/vitality/vim/stamina/ 御飯 [ごはん] /rice (cooked)/meal/ 車 [くるま] /car/vehicle/wheel/ 日本語 [にほんご] /Japanese language/ 現在は約80,000行が入っているので、なかなか便利だと思います。 ftp.cc.monash.edu.au (130.194.1.106) の pub/nihongo にある、 Jim Breen先生が提供したものです。英語の edict.doc もあります。 edict の 80,000行が約3メガバイトあるので、 普通の grep などは遅過ぎるはずです。 ━━━━━━━━━━━━━━━━━━━━━━━━┓ コンパイル ┃ ━━━━━━━━━━━━━━━━━━━━━━━━┛ gmake と gcc あれば、"gmake" だけで出来ます。 普通の make でも大丈夫ですが、lookupのMakefile を理解出来ない make も あるので、その場合には "sh make.sh" と、してみてください。 ━━━━━━━━━━━━━━━━━━━━━━━━┓ 準備 ┃ ━━━━━━━━━━━━━━━━━━━━━━━━┛ テキストファイルのインデクスを作って保存する。 % lookup -write edict "edict.jin" と言うインデクスファイルが作成される。 ━━━━━━━━━━━━━━━━━━━━━━━━┓ JISとEUCとShift-JIS に対して ┃ ━━━━━━━━━━━━━━━━━━━━━━━━┛ 探す対象のファイルの日本語の文字コードは、EUCでなければいけません。ただし、 ディスプレイの入出力はJISとEUCとShift-JISいずれも出来ます。"-jis","-sjis", "-euc"のコマンドラインアーギュメントがあります. (アーギュメントが指定されな い場合には"-euc"になります。) ━━━━━━━━━━━━━━━━━━━━━━━━┓ 基本的な使用 ┃ ━━━━━━━━━━━━━━━━━━━━━━━━┛ % lookup -jis edict ^^^^─────jisの場合 起動されれば、『search [edict]> 』のプロンプトが表示されます。 lookupのインタラクティブ入力は二つの種類があります: 第一: 検索させる命令 (正規表現 "regular expression") 第二: パラメータ等に対してのコマンド (“コマンド”) 入力行の最初の文字が半角スペース(' ')の場合には、コマンドとして解釈され ます。他の入力行は正規表現として解釈されます。 ファイルの中の言葉を検索する例: v── 注意:このスペースはプロンプトのスペースです。 search [edict]> Japan ぼけ /Japanese quince/ やくざ /Japanese mafia/Yakuza/ カルピス /Japanese milk-based soft drink/sperm/semen/cum (col)/ 活弁 [かつべん] /narrator in Japanese silent cinema/ 漢和 [かんわ] /Chinese Character-Japanese (e.g. dictionary)/ 弓道 [きゅうどう] /(Japanese) archery/ など 停止する命令 (コマンドの例): v── このスペースはプロンプトのスペースです。 search [edict]> quit ^──── このスペースは大切ですよ。 ━━━━━━━━━━━━━━━━━━━━━━━━┓ ローマ字 → 仮名 ┃ ━━━━━━━━━━━━━━━━━━━━━━━━┛ 入力行の最初の文字が‘/’ならば、それに続くローマ字は仮名に変換され ます。他のところで仮名に変換したい場合には、ローマ字で入力した後 ^space (コントロールスペース)を入力することで、ローマ字は仮名に変換されます。 変換する時に、小文字はひらがなに、大文字はカタカナになります。 ━━━━━━━━━━━━━━━━━━━━━━━━┓ 正規表現 ┃ ━━━━━━━━━━━━━━━━━━━━━━━━┛ grep や nemacs や mifes や perlで使われている正規表現が扱えます。正規表現の文 法の内容はプログラムに依存していますが、lookup の場合を以下の表に示します。 記号 意味 ━━━━━━━━━━━━━━━━━━━━━━━ . いずれかの一文字に一致 […] []の中の文字だけに一致 ‐‐‐‐‐‐‐‐‐‐‐‐‐‐“character class” [^…] []の中の文字以外だけに一致 \d いずれかの数字に一致 (“[0123456789]”と同じ)‐‐‐‐‐‐‐‐“digit” \D \d の逆 (“[0123456789]”以外に一致、“[^0123456789]”と同じ) \w 言葉のローマ字に一致 (“[0-9a-zA-Z_]”と同じ) ‐‐‐“word element” \W \w の逆 \s スペースかタブに一致 (“[ \t]”と同じ) ‐‐‐‐‐‐‐‐‐‐‐“space” \S \s の逆 \a 半角文字に一致 ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐“ascii character” \A 全角文字に一致 \k 全角カタカナ文字に一致‐‐‐‐‐‐‐‐‐‐‐‐‐“katakana character” \K 全角カタカナ文字以外に一致 \h 全角ひらがな文字に一致‐‐‐‐‐‐‐‐‐‐‐‐‐“hiragana character” \H 全角ひらがな文字以外に一致 \c 漢字だけに一致 ‐‐‐‐‐‐‐‐‐“chineese character”(国字も含む :-) \C 漢字以外に一致 □? □に一致する場合もない場合も一致‐‐‐‐‐‐‐‐‐‐‐‐ “maybe one” □+ □に一致する必要があるが、何回でも一致‐‐‐‐‐‐‐‐“at least one” □* □に一致する必要がないけれど、何回でも(なしでも)一致‐‐“any number” (…) 中の記号が一つのグループにする。 ‐‐‐‐‐‐‐‐‐‐‐‐‐‐“group” < 言葉の始まりに一致 ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐“start of word” > 言葉の終りに一致‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ “end of word” □|○ □かあるいは○に一致‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐“or” ^ 行の始まりに一致‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ “start of line” $ 行の終りに一致 ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐“end of line” 正規表現の例: “Japan”のある行に一致するが、 その“Japan”の文字列が含まれる言葉の場合には、一致しません。 ^日本 “日本”が行頭にある行に一致する。