grepして置換する場合*.txtを指定しても*.No.00201
elbow さん 07/01/25 10:02
 
こんにちは

grepして置換する場合*.txtを指定しても*.txt2もヒットします。
どこかで見た話だと思ったら
http://hidemaruo.dip.jp:81/hidesoft/hidesoft_2/x12173.html#12184
にありましたが、grepで検索する場合は余分にヒットしてもたいした影響はないですが
grepして置換の場合はあまり調子が良くないような気がします。
この仕様が変われば使いやすくなると思います。

環境: windowsXP SP2 + 秀丸6.50β15

[ ]
RE:00201 grepして置換する場合*.txtを指No.00211
秀丸担当 さん 07/01/25 14:26
 

>grepして置換する場合*.txtを指定しても*.txt2もヒットします。
>どこかで見た話だと思ったら
>http://hidemaruo.dip.jp:81/hidesoft/hidesoft_2/x12173.html#12184
>にありましたが、grepで検索する場合は余分にヒットしてもたいした影響はないです
>が
>grepして置換の場合はあまり調子が良くないような気がします。
>この仕様が変われば使いやすくなると思います。

変更するとすると、*.htmでのgrepでhtmlはヒットさせないようにしてしまうこ
とになるので今までと結果が違うということになり、はたしていいのかどうかわ
かりません。
grepして置換の場合は、*.htm;*.htmlというような書き方をしている場合、二重
にヒットしてしまうものとそうでないものが混在するという事態になってしまう
ので、これは問題のようです。少なくとも二重でヒットしてしまうことは無いよ
うに修正します。

[ ]
RE:00211 grepして置換する場合*.txtを指No.00220
elbow さん 07/01/25 23:37
 
こんにちは

>変更するとすると、*.htmでのgrepでhtmlはヒットさせないようにしてしまうこ
>とになるので今までと結果が違うということになり、はたしていいのかどうかわ
>かりません。

今までと結果が違ってしまうというのは承知していますが、この仕様を変更するなら
grep置換が入るこのタイミングしかないかなぁと思いポストしてみました。
これも他の方の意見も聞いてみたいところですが、個人的には仕様変更でもいいよう
な気も
するのですが、最終的にはお任せします。


>grepして置換の場合は、*.htm;*.htmlというような書き方をしている場合、二重
>にヒットしてしまうものとそうでないものが混在するという事態になってしまう
>ので、これは問題のようです。少なくとも二重でヒットしてしまうことは無いよ
>うに修正します。

こちらはよろしくお願いします。

[ ]
RE:00220 grepして置換する場合*.txtを指No.00222
elbow さん 07/01/26 00:22
 
こんにちは。

ポストしてから考えたのですが、「除外ファイル」みたいなのを
作っていただければそれはそれでいいような気もしてきました。
先の例で言うと*.htmでのgrepで除外ファイルに*.htmlを指定するイメージです。
仕様変更等含めて検討していただければと思います。

[ ]
RE:00220 grepして置換する場合*.txtを指No.00224
白雲斎 さん 07/01/26 07:20
 
白雲斎です。

>>変更するとすると、*.htmでのgrepでhtmlはヒットさせないようにしてしまうこ
>>とになるので今までと結果が違うということになり、はたしていいのかどうかわ
>>かりません。
>
>今までと結果が違ってしまうというのは承知していますが、この仕様を変更するなら
>grep置換が入るこのタイミングしかないかなぁと思いポストしてみました。
>これも他の方の意見も聞いてみたいところですが、個人的には仕様変更でもいいよう
>な気もするのですが、最終的にはお任せします。

「意図しないファイルがヒットした」は、まぁ許せるけれど、
「意図しないファイルが書き換えられた」は、許せないですからね。

「grepして置換」ダイアログに「拡張子を厳密に判定する」みたいなオプション
追加ではダメですかね。(デフォルトONで)

[ ]
RE:00224 grepして置換する場合*.txtを指No.00226
秀丸担当 さん 07/01/26 09:56
 

>ポストしてから考えたのですが、「除外ファイル」みたいなのを
>作っていただければそれはそれでいいような気もしてきました。

>「grepして置換」ダイアログに「拡張子を厳密に判定する」みたいなオプション
>追加ではダメですかね。(デフォルトONで)

どちらもあったら、それに越したことはないと思います。
とりあえず基本としてはいままでの方法と同じにして、重複だけはしないように
します。
その上でさらに追加の機能でやるかどうか考えたいと思います。
除外ファイルはやるとしたら.bakなどをずっと設定しっぱなしにしておきたいも
ので、*.htmのときにいちいち*.htmlを除外設定にするというような使い方は勝
手が良くないかもしれません。
厳密判定のオプションはあったらいいと思います。grepダイアログがごちゃごち
ゃになるのもなんなので動作環境のほうがいいかも。

[ ]
RE:00224 grepして置換する場合*.txtを指No.00227
CaskStrength さん 07/01/26 10:04
 
CaskStrengthです。

> 「意図しないファイルがヒットした」は、まぁ許せるけれど、
> 「意図しないファイルが書き換えられた」は、許せないですからね。

 強く同感です。

> 「grepして置換」ダイアログに「拡張子を厳密に判定する」みたいなオプション
> 追加ではダメですかね。(デフォルトONで)

 むしろ今までのおおらかなヒットの方がサービスだったのでしょう
が、厳密にしておく方が多くのユーザーに納得されやすいと思います。
そもそも、.htmと.htmlを同一視する以外に、なにか便利な局面がそ
うあるものでしょうか?
 それに、*.htm;*.htmlと指定すればすむ話ですから、grep、書き換
え問わず仕様としては厳密に判定した方がいいと僕は思います。

[ ]
RE:00227 grepして置換する場合*.txtを指No.00229
秀丸担当 さん 07/01/26 12:04
 

> むしろ今までのおおらかなヒットの方がサービスだったのでしょう
>が、厳密にしておく方が多くのユーザーに納得されやすいと思います。
>そもそも、.htmと.htmlを同一視する以外に、なにか便利な局面がそ
>うあるものでしょうか?
> それに、*.htm;*.htmlと指定すればすむ話ですから、grep、書き換
>え問わず仕様としては厳密に判定した方がいいと僕は思います。

昔のスレッドでも少し触れられていますが、秀丸エディタがサービスをしている
のはなく、Windowsにおけるワイルドカードの仕様がこうなっているだけです。
独自にファイル列挙するか除外するような処理をしていなければ、ほとんどのソ
フトでこの挙動になります。
こうなるのは3文字の拡張子だけのようです。

まあ、どちらを取るにしても、ユーザーの想定は様々でしょうから、grepして置
換の場合は *.htm で *.html がヒットした場合警告を出すようにするしか無い
のかも。

[ ]
RE:00229 grepして置換する場合*.txtを指No.00250
elbow さん 07/01/30 01:00
 
>・grepして置換で拡張子3文字で4文字以上がヒットする場合問い合わせを出す。
>(オプションにするかも)

こちらの件ですが、確かに問い合わせダイアログが出るようになりましたが
「すべてはい」や「すべていいえ」を選んでも複数回問い合わせ
られてしまいます。「すべてはい/いいえ」の場合は問い合わせは
1回だけの方がよいです。(オプションにすればいいだけかも)



[ ]
RE:00250 grepして置換する場合*.txtを指No.00256
秀丸担当 さん 07/01/30 12:37
 

>こちらの件ですが、確かに問い合わせダイアログが出るようになりましたが
>「すべてはい」や「すべていいえ」を選んでも複数回問い合わせ
>られてしまいます。「すべてはい/いいえ」の場合は問い合わせは
>1回だけの方がよいです。(オプションにすればいいだけかも)

すみません。ファイルの存在確認時と、実際に実行するときで二回出てしまって
いました。
修正させていただきます。

[ ]
RE:00250 「grep して置換」の確認No.00257
Iranoan さん 07/01/30 12:54
 
 秀丸担当さん、elbow さん今日は、Iranoan です。
> >・grepして置換で拡張子3文字で4文字以上がヒットする場合問い合わせを出す。
 私はこれより、バックアップが無効などの問い合わせが邪魔です。オプショ
ンになりませんか?

 また他のアプリケーションで開いて排他制御が働いている場合は仕方があり
ませんが、それ以外の場合は問い合わせも無く置換して欲しいです。その上で、
排他制御などで置換が出来なかった場合は、結果レポートに表示して頂ければ
幸いです。

[ ]
RE:00257 「grep して置換」の確認No.00264
秀丸担当 さん 07/01/30 17:29
 

>> >・grepして置換で拡張子3文字で4文字以上がヒットする場合問い合わせを出す。
>> >
> 私はこれより、バックアップが無効などの問い合わせが邪魔です。オプショ
>ンになりませんか?

確認を必要とすることは強く推奨したいのですが、オプションを用意するのであ
ればいいでしょうか。
拡張子を厳密にチェックするかどうかもオプションにしてみます。

> また他のアプリケーションで開いて排他制御が働いている場合は仕方があり
>ませんが、それ以外の場合は問い合わせも無く置換して欲しいです。その上で、
>排他制御などで置換が出来なかった場合は、結果レポートに表示して頂ければ
>幸いです。

結果レポートは、なるべく文章的ではなく、grep結果のようにマクロなどで後か
ら解析ができるような形にしておきたいところです。
まあこれもオプションがあったらいいかもしれないですが。

[ ]
RE:00264 「grep して置換」の確認No.00267
Iranoan さん 07/01/30 17:46
 
 秀丸担当さん今日は、Iranoan です。
> > また他のアプリケーションで開いて排他制御が働いている場合は仕方があり
> >ませんが、それ以外の場合は問い合わせも無く置換して欲しいです。その上で、
> >排他制御などで置換が出来なかった場合は、結果レポートに表示して頂ければ
> >幸いです。
>
> 結果レポートは、なるべく文章的ではなく、grep結果のようにマクロなどで後か
> ら解析ができるような形にしておきたいところです。
 末尾に
--------------- 置換できなかったファイル -----------------
0.txt
1.txt
と単純に羅列してはどうでしょう?

[ ]
RE:00256 grepして置換する場合*.txtを指No.00283
elbow さん 07/01/31 01:17
 
こんにちは。
こちらの件ですが秀丸6.50β17で修正されていることを確認しました。

[ ]
RE:00267 「grep して置換」の確認No.00293
秀丸担当 さん 07/01/31 11:43
 

> 末尾に
>--------------- 置換できなかったファイル -----------------
>0.txt
>1.txt
>と単純に羅列してはどうでしょう?

仮にgrepして置換した結果を解析するマクロがあったとして、「--------------
- 置換できなかったファイル -----------------」という行以降かどうかなどを
必ず判断しなければならないという条件が生まれることになると思うので、あま
りすっきりしないです。
また、開けなかった場合は、無視できるレベルではなく十分に致命的なエラーと
して表示する必要があると思うので、やらないことにします。

[ ]
RE:00293 「grep して置換」の確認No.00301
Iranoan さん 07/01/31 13:53
 
 秀丸担当さん今日は、Iranoan です。
> 仮にgrepして置換した結果を解析するマクロがあったとして、「--------------
> - 置換できなかったファイル -----------------」という行以降かどうかなどを
> 必ず判断しなければならないという条件が生まれることになると思うので、あま
> りすっきりしないです。
> また、開けなかった場合は、無視できるレベルではなく十分に致命的なエラーと
> して表示する必要があると思うので、やらないことにします。
 そうですか、解りました。

[ ]
RE:00211 grepして置換する場合*.txtを指No.00338
いいじま さん 07/02/03 09:42
 
いいじま@ユーザーです。

>> grep して置換する場合*.txt を指定しても *.txt2 もヒットします。

私も「拡張子を厳密にチェックして置換する」オプションに一票。

>> どこかで見た話だと思ったら
>> http://hidemaruo.dip.jp:81/hidesoft/hidesoft_2/x12173.html#12184
>> にありましたが、

補足すると、FATファイルシステムの場合、もともとは 8.3 文字しかファイル名を記
録できず、
また MS-DOS 時代は 8.3 文字を大前提にしたプログラムが非常に多数あるので
(MS-DOSのAPI自体が8.3文字しか領域を確保していないものもある)、
Windows 95 が出た際に、たとえば、「a file with long name.html」はディスク内
部では
「a file with long name.html」という名前のほかに「AFILEW~1.HTM」という短い名
前も
同時につけて互換性を維持することになりました。

そのため、*.txt2 というファイルは ????????.TXT という短い名前でもアクセスする
ことができるのです。短い名前は、Windows XP でもコマンドプロンプトで
dir /x
のようにコマンドを打ち込むと出てきます。

[ ]
RE:00338 grepして置換する場合*.txtを指No.00341
Iranoan さん 07/02/03 16:59
 
 いいじまさん今日は、Iranoan です。
> 私も「拡張子を厳密にチェックして置換する」オプションに一票。
 β18 で grep と共通の「拡張子を厳密にチェックする」がありますが、そ
れとは別にということでしょうか? 個人的には、grep と動作が異なると、混
乱の元だと思います。

[ ]
RE:00341 grepして置換する場合*.txtを指No.00342
いいじま さん 07/02/04 10:45
 
いいじまです。

>  いいじまさん今日は、Iranoan です。
>> 私も「拡張子を厳密にチェックして置換する」オプションに一票。
>  β18 で grep と共通の「拡張子を厳密にチェックする」がありますが、そ
> れとは別にということでしょうか? 個人的には、grep と動作が異なると、混
> 乱の元だと思います。

失礼しました。ベータを追いかけていないので知りませんでしたが、
(スレッドの流れにも乗り遅れました)
grep については β18 で取り入れられているのですね。
それを置換にも利用するということでまったく問題ないと思います。

[ ]