|
>>結果をソートしたいのではなく、例えばログファイルからの検索で、
>>・検索対象は新しいファイルにあることが多い
>>・対象が見つかれば、検索は打ち切って構わない
>>という状況があります。
>>この場合になるべく早く検索を終了したい、という事なのです。
>>確かに待っていればgrepは完了するのですが。
● 更新されたファイル順にグレップ
目的の言葉が見つかったら、すぐに次のファイルの検索を行なう。
● Cygwin
Cygwin があると一行で済んじゃう。
対象は *.txt で、探すことばは「foo」
$ ls -tr *.txt | xargs awk '/foo/{printf("%s:%d: %s\n", FILENAME, FNR, $0);
nextfile;}'
>a.tmp
検索を打ち切ってしまうなら。nextfile; を exit; にする。
● 秀丸だと...。
>dir /a-d/o-d/b *.txt >a.tmp
a.tmp のデータを利用して、ローカルグレップします。
マクロを作ると結構面倒です。(^^;)
タグジャンプ、検索、バックタグジャンプの繰り返しでも良いかも。
$$re = "foo";
##c = hidemaruhandle(0);
tagjump;
while( result ){
##f = hidemaruhandle(0);
if( ##f == ##c ){
message "tagjump 失敗。"; endmacro;
}
gofiletop;
searchdown $$re, regular;
if( result ){
message "みっけ !"; endmacro;
}
setactivehidemaru ##c;
closehidemaruforced ##f;
movetolineno 1, lineno + 1;
tagjump;
}
message "なかったよ。";
endmacro;
では。
|
|