e日記風 独り言

気まぐれ & 気まま & 天邪鬼な老いぼれ技術屋の日々の記録のうち、パソコン技術やインターネット技術、プリンタやPCアプリからプログラム言語などに関連した記事です。
Access Counter:  総アクセス数
-444- GREPについて
さっき気付いたので、ちょっと専門的になるが防備録的メモ
一つのフォルダーの中の複数のテキストファイル中から、決まった書式のテキストの文字列を全て検索して、それを一発で別の文字列に置き換えるということがしたい時、「GREP」という機能のユーティリティを使う。
私が今まで使っていたのは「Grep and Replace」というフリーウェア。このユーティリティで正規表現を使って 「<b class="title">-147-」や「<b class="title">-13-」のような文字列を検索し、それらに「<b class="title"> <a name="147">-147-</a>」や「<b class="title"> <a name="13">-13-</a>」のような文字列を置換したい。要は固定文字列や数字何ケタとか一定のパターンが決まっている文字列を検索し、その数字何ケタかの文字列はそのままにその前後の文字列を置換したり挿入したりしたい。
その場合問題は検索文字列中の「147」や「13]という数字何桁かの文字列などを置換文字列に挿入する必要が出てくる。いつも使っていた「Grep and Replace」でこの検索文字列中の数字を正規表現で 「([0-9]+)」と表現しておいて、置換文字列中に「\1」と置けば出来ると思ったんだが、どうも試してみたがうまくいかず、「\1」のままとなってしまう(「」は説明のためで実際はない)。何か勘違いしているんだろうかと暫く悩んだ。しかし、それほど試すことも多くはなく、「Grep and Replace」の正規表現の説明書も見つからなかった。
仕方ないので、Devas という新しいフリーウェアを探してきてやってみたら、簡単に置換出来た。正規表現対応と謳っているだけではダメということが分かった。
左の図は、Devas を使ってこうした置換を行った例で、もし置換文字列に二つ以上の検索文字列パターンを引用したければそれぞれの正規表現パターンを () () のように括弧 ()でくくり、置換文字列内にはそれぞれ「\1」「\2」のように、「\記号+番号」を使うことにより9個までは順番に引用が可能になる。
2010/06/13