要望:フィールド内の検索(grep)No.32552
mig さん 13/08/27 11:38
 
migと申します。いつもお世話になっています。

 さて、過去ログとマクロ・ライブラリーを探しても見つけられなかったので、要望
としてお聞き下さい。
 あるいは「そんなん、〓〓のマクロでできるようになっているよ。」なんていう結
果になるかもしれません。


 今、仮に

No <tab> A   <tab> B
1  <tab> abc <tab> abd
2  <tab> def <tab> xyz
3  <tab> ghi <tab> abc
4  <tab> jkl <tab> def

というファイルがあったとします。<tab>はタブを意味し、半角スペースは無視して
下さい。いわゆるTSVの形式のことです。

 こうしたファイルから「abc」を検索(grep)すると、当たり前ですが、1行目と3行
目がヒットします。これを、「A」(あるいは「B」)のフィールドだけを対象にして
検索(grep)するようなことはできませんか?「エクセルで列を選択して検索をかけ
る」というとわかりよいかと思います。

 勿論、上のファイルであれば、

.+\tabc\t



.+\t.+\tabc$

とすれば、こと足りるわけですが、実際にはもっと列が多いため、正規表現を書いて
いるうちに混乱してきてしまいます(苦笑)。

 もっと、ワガママを言えば、「A」のフィールドで「abcde」と行をまたがって検索
(grep)ができるようになれば、夢のようなお話しです。

 どうぞ、ご教示のほど、よろしくお願いいたします。

[ ]
RE:32552 要望:フィールド内の検索(grep)No.32553
Iranoan さん 13/08/27 12:32
 
 mig さん今日は、Iranoan です。
> No <tab> A   <tab> B
> 1  <tab> abc <tab> abd
<snip>
> TSVの形式のことです。
<snip>
> これを、「A」(あるいは「B」)のフィールドだけを対象にして
> 検索(grep)する
(?<=^(([^\t]*?\t){1}|([^\t]*?\t){2}))abc
の要領でできます。
・grep なので、ピンポイントではなく、行頭から該当箇所までヒットでも OK
  →前方一致は使わなくても良い
・この例の様に、2, 3 列目と連続している
の場合なら、
^([^\t]*?\t){1,2}abc
ともっと簡単にかけます。

 兎に角
{n,m}
で、直前の n 回以上、m 回以下のくり返しが指定できるので、これを利用し
てやればよいです。
 詳細については、ヘルプの「目次」→「検索系コマンド」→「検索」の
「HmJre.dllのヘルプ」等から、HmJre.dll のヘルプを見て下さい。

[ ]
RE:32553 要望:フィールド内の検索(grep)No.32554
Iranoan さん 13/08/27 17:42
 
 mig さん今日は、Iranoan です。
> (?<=^(([^\t]*?\t){1}|([^\t]*?\t){2}))abc
> の要領でできます。
 一つ書き忘れました。
 この方法だとフィールド先頭に限られてしまうので、限定しない場合は、
「abc」前に「.*」を追加して下さい。

[ ]
RE:32552 要望:フィールド内の検索(grep)No.32555
秀丸担当 さん 13/08/28 10:04
 

秀丸エディタの機能としては、TSVの特定の列だけを対象としたgrepというのは
できないです。
そういう指定もできたらいいということでご意見参考にさせていただきます。

いまのところ正規表現を使った方法などでやる必要があります。
正規表現は、Iranoanさんも書かれているような{n}や{n,m}を使った方法が書き
やすいと思います。

2列目だけなら
^([^\t]*\t){1}abc

3列目だけなら
^([^\t]*\t){2}abc

といった感じに数値だけを変えるとやりやすいと思います。

[ ]
RE:32554 要望:フィールド内の検索(grep)No.32556
mig さん 13/08/28 17:33
 
migです。

 Iranoanさん、ありがとうございました。
 実は、簡単な正規表現しか使えない人を相手に、「簡単に検索できるよ」と言いた
い場面がありまして...。すぐにエクセルにコピペして検索したがります。

 そんなわけで、マクロがないかなぁと思った次第でした。でも、たしかに仰る方法
でちゃんとgrepかけられます。ありがとうございました。

 取り急ぎ、御礼のみにて。

[ ]
RE:32555 要望:フィールド内の検索(grep)No.32557
mig さん 13/08/28 17:37
 
migです。

 お返事ありがとうございました。
 いつか願いが叶うことを祈っています。何故、こんなことを?ということにつきま
しては、Iranoanさんにお返事いたしましたので、ご参照下さい。

 また、正規表現につきましても、ありがとうございました。

 取り急ぎ、御礼のみにて。

[ ]
RE:32556 要望:フィールド内の検索(grep)No.32558
colder さん 13/08/28 19:54
 
colderです
一応マクロはあります。
grepはあまりテストしていない。
http://hide.maruo.co.jp/lib/macro/asearchv2.html

[ ]
RE:32558 要望:フィールド内の検索(grep)No.32559
mig さん 13/08/29 09:50
 
migです。

 colderさん、ありがとうございます。
 思っていたとおりのことができそうです。

 近似検索も活躍しそうです。重ねて御礼申し上げます。

 今後とも、よろしくお願いいたします。


 

[ ]