grepの結果表示についてNo.30950
Yossi さん 12/03/12 19:10
 
お世話になります。

grepをいじめてるようで申し訳ないのですが結果表示に関する要望です。
もし、マクロで実現できるならヒントをいただけるとありがたいです。
内容としましては grepでヒットした行の前後の行も結果に含めるような
オプションが欲しいという事です。
よろしくお願いいたします。

[ ]
RE:30950 grepの結果表示についてNo.30952
Iranoan さん 12/03/12 22:13
 
 Yossi さん今日は、一ユーザの Iranoan です。
> マクロで実現できるならヒントをいただけるとありがたいです。
> 内容としましては grepでヒットした行の前後の行も結果に含めるような
> オプションが欲しい
 オプションはないですね。
 マクロは作りましたが
http://homepage3.nifty.com/iranoan/hidemaru/macro.htm#GREP
最近自分ではあまり使っていなかったりして(^^;

[ ]
RE:30952 grepの結果表示についてNo.30953
Yossi さん 12/03/12 23:31
 
Iranoanさん こんにちは

> マクロは作りましたが
>→http://homepage3.nifty.com/iranoan/hidemaru/macro.htm#GREP
>最近自分ではあまり使っていなかったりして(^^;

おお、ありがとうございます。早速試させて頂きました。
実行しますと
「\R:\aaa\bbb\src へのカレントフォルダの移動に失敗しました。」
のエラーダイアログが表示されて正常に動作しないようです。
ドライブレターの前に \ が付加されているのが原因っぽいのですが・・
何か設定操作を間違ってますでしょうか?
田楽DLLも入れてなかったので最新の 3.21を入れました。

[ ]
RE:30953 grepの結果表示についてNo.30955
Iranoan さん 12/03/12 23:54
 
 Yossi さん今日は、一ユーザの Iranoan です。
> おお、ありがとうございます。早速試させて頂きました。
> 実行しますと
> 「\R:\aaa\bbb\src へのカレントフォルダの移動に失敗しました。」
> のエラーダイアログが表示されて正常に動作しないようです。
 色々まずい部分があるようなので、これを機会に見直してみますm(__)m

[ ]
RE:30953 grepの結果表示についてNo.30960
Iranoan さん 12/03/13 02:42
 
 Yossi さん今日は、一ユーザの Iranoan です。
> 「\R:\aaa\bbb\src へのカレントフォルダの移動に失敗しました。」
> のエラーダイアログが表示されて正常に動作しないようです。
 幾つか問題があり、それは直したのですが、直す前から、このエラーが再現
しません???
 何か条件はありませんか?

 取り敢えず、手元で直した分については、
http://homepage3.nifty.com/iranoan/hidemaru/macro/grep121b.zip
にアップしました。ダイアログ・ボックスにある「ヒットしない行」はまだ動
作しませんが(^^;

[ ]
RE:30960 grepの結果表示についてNo.30961
Iranoan さん 12/03/13 04:05
 
 Yossi さん今日は、一ユーザの Iranoan です。
> > 「\R:\aaa\bbb\src へのカレントフォルダの移動に失敗しました。」
> > のエラーダイアログが表示されて正常に動作しないようです。
>  幾つか問題があり、それは直したのですが、直す前から、このエラーが再現
> しません???
>  何か条件はありませんか?
 フルパスを使っているとダメでした。
修正版を↓に置きました
http://homepage3.nifty.com/iranoan/hidemaru/macro/grep121b2.zip

[ ]
RE:30961 grepの結果表示についてNo.30962
Yossi さん 12/03/13 08:06
 
Iranoanさん こんにちは

> フルパスを使っているとダメでした。
>修正版を↓に置きました
>http://homepage3.nifty.com/iranoan/hidemaru/macro/grep121b2.zip

修正版ありがとうございます。
ただ、なぜか起動してくれません・・
小生の環境でしょうか?

OS Windows XP(x86) SP3

他のマクロや grep.mac + serchEx も以下のフォルダに入れてます
C:\Program Files\Hidemaru\mac\

秀丸本体や DengakuDLL.dll は以下です。
C:\Program Files\Hidemaru\

他のマクロは普通に動作しています。
ただ、田楽DLLを利用するマクロは今回が初めてです。

[ ]
RE:30962 grepの結果表示についてNo.30969
Iranoan さん 12/03/13 12:24
 
 Yossi さん今日は、一ユーザの Iranoan です。
> 修正版ありがとうございます。
> ただ、なぜか起動してくれません・・
 旧版は動いていて、エラーなどのメッセージも出ないんですよね????
 そうなると、私には「試しに秀丸エディタが最新版でなければ、最新版に差
し替えてみて下さい」ぐらいしか言えませんm(__)m。
 あとは、試しに
C:\Program Files\Hidemaru\mac\serchEx\searchEx.ini
を削除してみて下さい。これで新規で使い始めたのと同じになるはずなので。

[ ]
RE:30969 grepの結果表示についてNo.30971
Yossi さん 12/03/13 13:12
 
Iranoan さん

> あとは、試しに
>C:\Program Files\Hidemaru\mac\serchEx\searchEx.ini
>を削除してみて下さい。これで新規で使い始めたのと同じになるはずなので。

なぜか削除しても起動しませんね、これはちょっと諦めることにします。
色々とご親切にありがとうございます、お手数をおかけしました。

[ ]
RE:30971 grepの結果表示についてNo.30974
Iranoan さん 12/03/13 14:32
 
 Yossi さん今日は、Iranoan です。
> なぜか削除しても起動しませんね、これはちょっと諦めることにします。
 仕方がないですね。
 一つ確認したいのですが、「起動しません」とは、何も起きないという事で
すよね。

[ ]
RE:30974 grepの結果表示についてNo.30975
Yossi さん 12/03/13 14:39
 
Iranoanさん こんにちわ

>> なぜか削除しても起動しませんね、これはちょっと諦めることにします。
> 仕方がないですね。
> 一つ確認したいのですが、「起動しません」とは、何も起きないという事で
>すよね。

マクロの動作を追ってゆくと grep.mac の 16行目
execmacro currentmacrodirectory + "\\searchEx\\grepEx.mac";
で動作が終わってました。grepEx.mac を確認するとコードが存在せず
ファイルサイズも 0 byte、 以下のファイルも 0 byteでした。

blockGrep.mac
CloseFile.mac
grepAndDlg.mac
grepDialog.mac
grepEx.mac
lineGrep.mac

再度アップしていただけるとありがたいです。
よろしくお願いいたします。

[ ]
RE:30975 grepの結果表示についてNo.30978
Yossi さん 12/03/13 15:08
 
言葉足らずでした。

>ファイルサイズも 0 byte、 以下のファイルも 0 byteでした。

常用している解凍ソフト Lhaplus が grep121b2.zip の解凍で
CRCエラーを吐いていたのに気がついていませんでした。

[ ]
RE:30978 grepの結果表示についてNo.30979
Yossi さん 12/03/13 15:33
 
連投すみません、常用している解凍ソフト Lhaplus がおかしいのか
XP標準の ZIP展開機能では問題なく解凍できました。

ただ、やはりカレントフォルダの移動に失敗しました。のエラーが表示されます。

\C:\Document and Settings\Administrator\デスクトップ\abc へのカレントフォル
ダの移動に失敗しました。


付加条件は以下のとおりです。
 ■サブフォルダも検索
 ■ファイル名をフルパスで出力
 ◎前後行
   前 [ 1 ]   後 [ 1 ]

[ ]
RE:30979 grepの結果表示についてNo.30980
Yossi さん 12/03/13 16:32
 
もう、独りごとモードになって来ましたがw

\C:\Document and Settings\Administrator\デスクトップ\abc

は正確には

\C:\Documents and Settings\Administrator\デスクトップ\abc

です、 手打ちだったので s が抜けてしまいました。m(__)m

カレントフォルダの移動に失敗しました。の件ですが
付加条件に、前後行を含めなければ正常に動作しました。

また、検索ファイル(N)はデフォルトで *.txt なのですが
可能なら最後に指定した拡張子が表示され、コンボの▼で
過去の候補が表示されると嬉しいです。

searchEx.ini の file= と tmp= には最後に検索したファイルが
記録されているようなのですが、起動時は必ず *.txt となっていて
過去の候補も表示されないようです。

[ ]
RE:30980 grepの結果表示についてNo.30981
山紫水明 さん 12/03/13 16:43
 
 Yossiさん,

 ライブラリにある拙作の「前後行・行渡り検索・結果強調Grepマクロ」
http://hide.maruo.co.jp/lib/macro/zengo320.html
うまく動くかわかりませんが,よろしければ,お試しください。

                          山紫水明(ユーザー)
                          SANSHISUIMEI

[ ]
RE:30981 grepの結果表示についてNo.30983
Yossi さん 12/03/13 17:08
 
山紫水明 さん こんにちわ

> ライブラリにある拙作の「前後行・行渡り検索・結果強調Grepマクロ」

望んでいた結果を得ることができました。
区切りのアイデアも素晴らしいです、ありがとうございます。

Iranoanさんもお忙しい中ありがとうございます。
ご親切に感謝致します。

[ ]
RE:30983 grepの結果表示についてNo.30984
山紫水明 さん 12/03/13 17:30
 
 Yossiさん,

 うまく動いてよかったです。最新版を
http://homepage2.nifty.com/12sun/sansui.html
に置いています。
                          山紫水明
                          SANSHISUIMEI

[ ]
RE:30984 grepの結果表示についてNo.30986
Yossi さん 12/03/13 18:36
 
山紫水明さん こんにちわ

> うまく動いてよかったです。最新版を
>http://homepage2.nifty.com/12sun/sansui.html

出力結果が洗練されていてとてもいい感じです。
ありがとうございます。

[ ]
RE:30983 grepの結果表示についてNo.30988
Iranoan さん 12/03/13 21:05
 
 Yossi さん今日は、一ユーザの Iranoan です。
> Iranoanさんもお忙しい中ありがとうございます。
 混乱させてすいません。
 エラーを参考に、もう一度見直してみます。

> 常用している解凍ソフト Lhaplus が grep121b2.zip の解凍で
> CRCエラーを吐いていたのに気がついていませんでした。
<snip>
> 常用している解凍ソフト Lhaplus が grep121b2.zip の解凍で
> CRCエラーを吐いていたのに気がついていませんでした。
 追加圧縮に対応していないソフトウェアで問題がある様だけど、さてどうし
よう(^^;。

[ ]
RE:30984 grepの結果表示についてNo.30989
Yossi さん 12/03/13 21:09
 
山紫水明さん  こんにちわ

早速、使わせていただいての感想というか厚かましい
要望と言いますか・・m(_ _)m

まず、ファイル数が多い時、全体の処理に結構な時間がかかるのですが
これはスクリプトの性格上しかたないと思っています。

ただ、処理中に窓が断続的に出現しては消えてその度にフォーカスを
持つため他の作業ができない状態になります。
現在わたしが格闘しているファイルのボリュームですと3分程度
他の作業ができないような状況です。

それで、途中の文字列処理の状況は見えなくてもいいので、処理中の
ファイル名と読んでいる行数の表示を小さなダイアログに表示する
だけというのは難しいでしょうか?

気が向いた時でよいのでご検討いただけるとありがたいです。
よろしくお願いいたします。

[ ]
RE:30989 grepの結果表示についてNo.31002
山紫水明 さん 12/03/14 20:54
 
 Yossiさん,

>まず、ファイル数が多い時、全体の処理に結構な時間がかかるのですが
>これはスクリプトの性格上しかたないと思っています。

 秀丸マクロは巨大なファイルや多数のファイルを短時間で処理するのにはあま
り向いていないと思います。まあ,手作業でやるよりはましとわりきれば,それ
でいいのですが。
 他のスクリプト言語を使えば高速処理は可能かもしれませんが,私自身はプロ
グラミングとは何の関係もない仕事をしており,秀丸マクロ以外には何も知りま
せん。

 このマクロの最新版とはいえ,すでに5年前に作ったものなので,自分でもど
のような仕組みになっているのか忘れてしまっています。多分,可能な限りス
ピードアップを図ったつもりだったと思います。

>気が向いた時でよいのでご検討いただけるとありがたいです。

 そうですね,また考えてみますが,あまり期待しないでいただければと思いま
す。

                          山紫水明
                          SANSHISUIMEI

[ ]
RE:31002 grepの結果表示についてNo.31003
Iranoan さん 12/03/14 21:15
 
 今日は、一ユーザの Iranoan です。
>  秀丸マクロは巨大なファイルや多数のファイルを短時間で処理するのにはあま
> り向いていないと思います。
 確かに速度を求めるなら、GNU grep 等の専用ツールを使った方が速いで
しょうね。

[ ]
RE:31003 grepの結果表示についてNo.31004
Yossi さん 12/03/15 11:30
 
>>  秀丸マクロは巨大なファイルや多数のファイルを短時間で処理するのにはあま
>> り向いていないと思います。
> 確かに速度を求めるなら、GNU grep 等の専用ツールを使った方が速いで
>しょうね。

なるほど!
試しに、Cygwin で前後行を出力する形でためしてみると
3分かかった処理が 4秒ほどで完了しました。おそるべし GNU grep
というか Iranoanさんが指摘されてるようにマクロで多数の
ファイルを扱うこと自体が向いてないようですね

また、山紫水明さんのマクロのように詳細で親切な grep情報が
出力されるわけではないもののバイナリファイルも

Binary file abc/def/ghi/obj/inetd.o matches

と出力されてて自動判定しているようです。grep対象の
ファイル数が多い場合はこちらを使ったほうがよさそうです。
Iranoanさんありがとうございます。

[ ]
RE:31002 grepの結果表示についてNo.31005
Yossi さん 12/03/15 12:01
 
山紫水明さん こんにちわ

マクロで多数のファイルを扱う事自体が厳しいようです。
山紫水明さんのマクロは出力ファイルのヘッダー情報が素晴らしいので
その情報が必要なときに利用させて頂き
ファイル数が非常に多くスピードが必要な場合は GNU grep で代用し
ようと思います。
ありがとうございます。

[ ]
RE:31004 grepの結果表示についてNo.31006
Yossi さん 12/03/15 15:18
 
>試しに、Cygwin で前後行を出力する形でためしてみると
>3分かかった処理が 4秒ほどで完了しました。おそるべし GNU grep

訂正があります。処理を実行したフォルダが違っていました
よく似たフォルダがたくさんあるため勘違いしていました。m(_ _)m

同じフォルダを対象にした場合では、山紫水明さん作の Zengogyo.macで 約1分、GN
U grep では 約4秒でした。
 $ grep -A 1 -B 1 "keyword" -r *.* > /cygdrive/c/result.txt

最後にしつこいですが、、(汗;
grepは恐らく多くの秀丸エディタユーザーが多用する機能だと思いますし
秀丸エディタ自体の grepは非常に高速に動作します。
エディタに付加価値を与える有用な機能なので可能なら秀丸本体で
前後行の取り出しオプションを実装してもらえたら嬉しいです。
今後のネタ用に投稿させて頂きます。

[ ]
RE:31006 grepの結果表示についてNo.31007
秀まるお2 さん 12/03/15 17:05
 
 秀丸エディタのネタということで了解しました。

[ ]
RE:31006 grepの結果表示についてNo.31022
山紫水明 さん 12/03/19 16:51
 
 Iranoanさん,
  GNU grep の情報ありがとうございました。

 Yossiさん,
 私のマクロに秀丸エディタから GNU grep を呼び出す機能を追加して,β版とし
て私のホームページにアップしておきました。
 いずれ,秀丸エディタに実装されるかもしれませんが,その時までということで。

                          山紫水明
                          SANSHISUIMEI

[ ]
RE:31022 grepの結果表示についてNo.31032
Yossi さん 12/03/21 11:56
 
山紫水明さん,

GNU grep を呼び出すβ版ありがとうございます。
早速試してみました。
が、なぜか GNU grepを選択するとわたしの環境では
一件もヒットしない症状が発生します。

GNU grep を選択しなければ
================================================
【検索結果】  12/03/21(水) 11:45   by Zengogyo.mac 3.26

検索語 「*****」を含む,前 1 行,後 1 行です。
検索結果は,語数:1286,行数:944 です。
< 所要時間  18秒 >

検出ファイル名 (21 個):
<以下 grepの結果表示>
-------------------------------------------


同じ条件で GNU grep を選択すると
================================================
【検索結果】  12/03/21(水) 11:45  by Zengogyo.mac 3.26 & GNU grep

検索語 「*****」を含む,前 1 行,後 1 行です。
検索結果は,語数:0,行数:0 です。
< 所要時間  0秒204 >
--------------------------------------------------------

となりました。
コマンドプロンプトで grep -V を実行すると
================================================
GNU grep 2.6.3

Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.
This is free software: you are free to change and redis
There is NO WARRANTY, to the extent permitted by law.
--------------------------------------------------------

と表示されますのでパスは通っていると思います。

マクロ中の grepのパスは以下のように設定しています。

$GNUgrep = "C:\\cygwin\\bin";

マクロを動かすために更に何かできることがあるでしょうか?
よろしくおねがいします。

[ ]
RE:31032 grepの結果表示についてNo.31037
山紫水明 さん 12/03/21 20:25
 
 Yossiさん,

 個別のマクロの話になりますので,『秀丸エディタβ版&秀丸メール常連さん
フォーラム』の「4.公開マクロ サポート会議室(秀丸エディタ関連)」にコメ
ントします。http://www.maruo.co.jp/turukame/4/indexg.html

                          山紫水明
                          SANSHISUIMEI

[ ]