青竹雑記帖(6代目)

テキスト処理をメインとしたIT解説をします。

文字だけで扱うコンピュータの世界(7):テキストファイル検索のすすめ(強力版その2・その名は『GREP』)

承前

blog.aotake91.net

今回は、ついにテキストファイル検索の基本にして王道、さらには究極の存在である「GREPGrep)」にお越しいただきます。あの最強ITエンジニアもそこの大富豪も、大量の研究データを扱う研究者も、みんな誰でもGREPを使っています。これを知るともう昔には戻れません。

GREPGrep)とは

Wikipedia先生を召喚します。

ja.wikipedia.org

grep(グレップ、グレプ)は、UNIXおよびUnixオペレーティングシステムにおけるコマンド。テキストファイル中から、正規表現に一致する行を検索して出力する。

UNIXだって? Windowsが関係ないならさようなら……するには及びません。このコマンドの強力さと便利さに魅せられた先人たちが、このプログラムをWidows向けに作り替えてくれたり、各テキストエディタに同等の機能を組み込んだりしてくれています。例によって「メモ帳」では使えません。乗るしかない、このビッグウェーブテキストエディタ乗り換え)に。

正規表現で検索できるって、前回説明したテキストエディタの機能と変わらないのでは?」と思われるでしょう。前回説明した機能とGREPとの最大の違いは、「GREPは複数ファイルをまとめて検索できる」点にあります。複数のテキストファイルに対してまとめて検索できると、たとえば1日1ファイルの形で作る家計簿から「食費」の項目だけを抜き出したり、大量のソースコードからデバッグ用に埋め込んだヤバい文章「俺の借金サンキュッパ!(3980億円)」を発見したりできます。本当はコマンドラインから使うのが王道ですが、この記事を読まれている方にGREPコマンドラインから実行できるような環境を整えてもらうとなると、それだけで三日三晩を費やしてしまう恐れがあります。そこで、GREP相当の機能が使えるWindows向けテキストエディタを使ってもらいます。

実例1:Meryの場合

Meryでは、直接は「GREP」の文字がなく、検索機能を複数ファイルに拡張したものとして提供されています。

Meryの場合、「検索」メニューの下に「ファイルから検索」サブメニューがあります。ここからGREPと同じ機能を呼び出します。
Meryの場合、「検索」メニューの下に「ファイルから検索」サブメニューがあります。ここからGREPと同じ機能を呼び出します。

検索にあたって設定すべき項目に「検索する文字列」「ファイルの種類」「検索するフォルダ」と、前回見た5つの選択肢、そして「エンコード」なるものがあります。このうち、「検索する文字列」には、検索したい単語や文章を入れてください。次の「ファイルの種類」には、検索したいファイルに合わせて、そのファイルに合う「拡張子」を書きます。ファイル名の最後のピリオドから末尾までの3~4文字を拡張子と言い、たとえばテキストファイルは「txt」、不倶戴天の仇敵・Wordファイルは「docx」だったりします。テキストファイルを検索するならば、だいたい「*.txt」と書けば大丈夫です。

ものは試しに、私の家計簿から遊びに使った金をあぶり出します。この家計簿は1日分が1ファイルになっています。
ものは試しに、私の家計簿から遊びに使った金をあぶり出します。この家計簿は1日分が1ファイルになっています。

検索をすると、次のように結果が出てきます。何日にどの遊びにいくら使ったのか明らかになってしまうので検閲により削除しました。Meryですと、検索結果のファイル名の部分をダブルクリックすることで、そのファイルを新しいタブで開いてくれます。

検索結果(検閲済)
検索結果(検閲済)

実例2:サクラエディタの場合

サクラエディタですと、読んで字のごとく「Grep」というメニューがあります。

サクラエディタの「Grep」メニュー
サクラエディタの「Grep」メニュー

サクラエディタのGrep画面は非常に機能豊富ですが、基本は同じです。
サクラエディタGrep画面は非常に機能豊富ですが、基本は同じです。

検索結果(こちらも検閲済)。検閲行数が多いのでGIMPでガウスぼかしをかけました。
検索結果(こちらも検閲済)。検閲行数が多いのでGIMPガウスぼかしをかけました。

サクラエディタでも、検索結果のファイル名の部分をダブルクリックすることで、そのファイルを新しいタブで開いてくれます。

まとめと次回予告

複数のファイルにまたがっていても向かうところ敵なし、GREPの力ですべてを検索してしまいましょう。

次は何にしましょうか。王道は「検索」の次に「置換」を説明するパターンですので、王道のように行きましょう。ではでは。