grep(グレップ)とは、複数のテキストファイルにまたがって検索し、ヒットした文字列を一件一行としてリストしてくれる大変便利なツールです(ここではそういうことにしておいて下さい)。
但し一般的なgrepツールの振る舞いは、ヒットした文字列の前後を含めた行単位で扱うため、ヒットした文字列だけを抽出しようとすると逆に不純物を除去して精製する一手間が必要でした。また大抵は検索対象が任意のファイルではなくフォルダ単位でしか検索できませんが(grepとは本来そういうものではある)、今回使うDevas(ディーヴァス)はうれしいことに、こちらが欲していた以下の条件をすべて満たしています。
なおDevasは本来検索だけでなくヒットしたものを一括置換したり、ヒットした中から任意のものだけ選択して置換することもこなす優れたソフトですが、今回は検索部分だけを活用します。
正規表現の書き方については、『正規表現』とか『Perl5互換』で検索してその手の指南役サイトをあたって下さい。
注意すべきことは、Devasは文字列の内部処理をUnicodeで行っているので、検索文字列に文字コード領域内全部の漢字を指定するときは、シフトJISではなく、Unicodeのコード順、つまり一番最初の漢字は一に、一番最後の漢字は龠(そういうことにしておいて下さい)にしておかないと、取りこぼす漢字が発生することです。
#本来は[一-龠]ではなく[\x4e00-\x9fa0]のようにコード番号で指定するようですが、本稿では解り易さを優先して漢字を直に入力しています。具体的にどんな順番で並んでいるかを簡単に調べるには、かな漢字変換の[IMEパッド]→[文字一覧]画面で、左上にある[Unicode]と[シフトJIS]を切り替えてみて下さい。
上記の検索条件を最低限説明すると、ひとつ目の[一-龠]はUnicodeでの『日本の漢字コード領域すべての漢字』一文字を表します(そういうことにしておいてください)。ふたつ目の[ 一-龠々]の中に半角スペースが入っているのは、例えば『深井 零』のように姓名の間にスペースが挟まっている場合に備えてのことです。『々』は漢字ではなく記号の範疇になるため追加してあります。末尾の半角『+』は直前の文字の繰り返しを表します。つまり“もしかすると間にスペースが入っているかもしれない二文字以上の漢字(と々)で構成された文字列”を検索対象とします。
カタカナを抽出する場合、二文字目以降に『ー(音引き)』『・(ナカグロ)』『==(半角と全角のイコール)』も検索するようにしてありますが、これは“カール・グスタフ”とか“クワイ=ガン・ジン”といった、本来ひとつながりの文字列として扱いたいものが“カール”と“グスタフ”の別々に文字列として扱われてしまうのを防ぐためです。
二文字以上の全角・半角の英数文字と半角の記号を抽出します。
正直なところ英単語ならスペルチェッカーを使った方が話が早そうなので、カタカナ抽出と組み合わせて『12.7ミリ』とかを検出できるようにすると便利かもしれません(やり方は自分で考えてね)。
実際の操作手順は以下の通りです。
※リンク先にカタカナ検索を行ったときの画面画像を用意しました。但し複数の状態の画面を合成したので、実際の状態とは異なっていることをお断りしておきます。
検索結果が出たら、
以後の操作は、並べ替えと重複行の削除ができるエディタで行います。DeuxEditorとotbeditでのやり方を別ページに記しました。