grepの不具合No.08715
TAKA さん 01/05/19 14:18
 
TAKA です。

grepでファイル名にワイルドカードを使用して拡張子が3文字以上
あると、不具合があるようです。

「TEST.TXT」と「TEST.TXT2」を用意してgrepの対象ファイルに
「*.TXT」を指定して検索すると「TEST.TXT2」まで対象とされてし
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
まいます。(これは意図と違う)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
「TEST.TXT」を指定して検索すると「TEST.TXT」だけが対象となり
ます。(これは意図通り)

「TEST.TT」と「TEST.TT2」を用意してgrepの対象ファイルに
「*.TT」を指定して検索すると「TEST.TT2」は対象になりません。
(これは意図通り)

[ ]
RE:08715 grepの不具合No.08717
山紫水明 さん 01/05/19 17:30
 
 TAKAさん,こんにちは。

》「TEST.TXT」と「TEST.TXT2」を用意してgrepの対象ファイルに
》「*.TXT」を指定して検索すると「TEST.TXT2」まで対象とされてし
》^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
》まいます。(これは意図と違う)
》^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 こちらでも再現しました。 Windows98 です。
「TEST.TXT22」,「TEST.TXT222」も対象になります。
残りのテストも同じ結果です。

     では, (^^)/~
                                        山紫水明

[ ]
RE:08717 grepの不具合No.08718
TAKA さん 01/05/19 17:56
 
TAKA です。

> こちらでも再現しました。 Windows98 です。
>「TEST.TXT22」,「TEST.TXT222」も対象になります。

確認ありがとうございます。
拡張子は3文字しか対象にしていないようですので、ロングファイ
ル名の対応し忘れですね。
#結構やばい問題かも


P.S.
「.+」より、「.|\n」がよいかも。
「save;」より「if( updated ) save;」がよいかも。

[ ]
RE:08715 grepの不具合No.08719
える さん 01/05/19 20:55
 
>「TEST.TXT」と「TEST.TXT2」を用意してgrepの対象ファイルに
>「*.TXT」を指定して検索すると「TEST.TXT2」まで対象とされてし
>まいます。(これは意図と違う)

過去に *.htm と *.html で同じ内容が出てましたよね?
開くダイアログなんかも基本的にすべて同じ状態です。

これは DOS 互換のファイルシステムが持つ特徴で4字以上の拡張子
がファイルのエントリ名で3文字であるためです。

DOS/Windows 自身の互換性のために来ている仕様なので秀丸側では
OS の標準的動作に従うとするなら対処しないで、現状のままで良い
んじゃないですかね。

動作環境のダイアログの設定のところに「厳密な拡張子の判別」と
かいうチェックを追加されるとかいうのも良いかもしれない。

[ ]
RE:08719 grepの不具合No.08721
TAKA さん 01/05/19 21:22
 
TAKA です。

>>「TEST.TXT」と「TEST.TXT2」を用意してgrepの対象ファイルに
>>「*.TXT」を指定して検索すると「TEST.TXT2」まで対象とされてし
>>まいます。(これは意図と違う)
>
>過去に *.htm と *.html で同じ内容が出てましたよね?

開くのダイアログでは不具合報告が出ており、秀丸担当さんから修
正しますというコメントがあります。
「8411」のスレッド参照。


>DOS/Windows 自身の互換性のために来ている仕様なので秀丸側では
>OS の標準的動作に従うとするなら対処しないで、現状のままで良い
>んじゃないですかね。

上記の通り、開くダイアログが不具合として直すなら、直さないと
いけないと思います。
秀丸は、DOSで動く訳ではないので、ファイル名を8.3形式で扱
う必要はないと思います。
旧タイプの開くダイアログは、旧タイプということで、「8.3形
式」ですが、grepのダイアログは、「8.3形式」では表示されて
いませんので、「8.3形式」で扱われること自体がまずいと思い
ます。


後は、秀丸担当さんのコメント待ちですね。

[ ]
RE:08718 grepの不具合No.08724
山紫水明 さん 01/05/19 22:53
 
 TAKAさん,こんばんは。

》「.+」より、「.|\n」がよいかも。
 これは改行だけのファイルも拾うということですね。ファイルの全リストをつく
るならこの方がいいでしょうが,置換の対象ということであれば,はじめから捨象
してもいいのではないかと思いますが。

》「save;」より「if( updated ) save;」がよいかも。
 確かに無駄な保存はしない方がいいですね。

     では, (^^)/~
                                        山紫水明

[ ]
RE:08724 grepの不具合No.08725
TAKA さん 01/05/19 23:06
 
TAKA です。

>》「.+」より、「.|\n」がよいかも。
> これは改行だけのファイルも拾うということですね。ファイルの全リストをつく
>るならこの方がいいでしょうが,置換の対象ということであれば,はじめから捨象
>してもいいのではないかと思いますが。

めったにないとは思いますが、正規表現を使って、改行だけの行は
削除するといった場合に、改行だけのファイルはなくなって欲しい
とかでしょうね。
でも、保存時にファイルがなくなるので、確認ダイアログが出そう
ですね。
それに、改行しかないファイルなんて、めったに作らないのでたい
した問題ではないですね。
「.」という表現でもいいかもしれませんね。


上げ足取りみたいなことを言って、すみませんでした。

[ ]
RE:08715 grepの不具合No.08726
TAKA さん 01/05/19 23:50
 
TAKA です。

もう1つ不具合?がありました。
grepで正規表現を使って「\n」を対象にすると、改行だけの行しか
検索されません。本来なら、すべての行が対象になるべきだと思い
ます。


以下の内容は、たいした問題ではないので気にしないでもいいので
すが、一応書いておきます。

正規表現で「$」を対象にすると、すべての行(「EOF」で終わって
いるものも含めて)が対象になって欲しいのですが、現仕様ではヒ
ットした文字列の長さが0バイトならヒットとみなさないという仕
様があるので、だめですよね。

「7845」で

>この件は、Arimacさんのお察しの通り、マッチした長さ(nLength)
>が0のときだけ例外的に対象外とするように処理されています。
>
>>マッチした長さが0の場合だけ特別扱いして
>>1文字だけ進めるようにする方が良いと
>>思います。
>
>こうすることでより良くなるかもしれないので、検討しておきます。

とあったので、ひょっとすると「$」だけでもヒットするようにな
るのかな?

現在、[EOF]だけで終わっているファイルをgrepで拾ってくること
は不可能ですね。

[ ]
RE:08726 grepの不具合No.08727
Arimac さん 01/05/20 00:59
 
grepで空行は抽出されない現象は確認されていて
対象にして欲しいという要望は上がっていたような
気がするのですが、なるほどマッチした長さが
0の場合の処理の問題だったわけですね(^^;
 
なぜ空行も抽出して欲しい場合があるかというと
BregIfではパターンの否定機能(先頭に~を付ける)が
あって、例えばコメント行以外(~^[ \t]*//)を抽出したい
というときにプログラムを見やすくするために挿入してある
空行も一緒に取り出したいためです(^^;

[ ]
RE:08727 grepの不具合No.08730
TAKA さん 01/05/20 11:31
 
TAKA です。

>grepで空行は抽出されない現象は確認されていて
>対象にして欲しいという要望は上がっていたような

ありゃ、そうでしたか。知りませんでした。


>気がするのですが、なるほどマッチした長さが
>0の場合の処理の問題だったわけですね(^^;

推測ですが、多分そうでしょうね。


>BregIfではパターンの否定機能(先頭に~を付ける)が

いいなー。JREにも欲しいなー。


#それにしても、Arimacさんは正規表現とかにかなり詳しい
 ようですが、どういう方なんだろう?

[ ]
RE:08721 grepの不具合No.08740
える さん 01/05/20 17:50
 
>>>「TEST.TXT」と「TEST.TXT2」を用意してgrepの対象ファイルに
>>>「*.TXT」を指定して検索すると「TEST.TXT2」まで対象とされてし
>>>まいます。(これは意図と違う)
>>過去に *.htm と *.html で同じ内容が出てましたよね?
>開くのダイアログでは不具合報告が出ており、秀丸担当さんから修
>正しますというコメントがあります。

あれ? なんとなく、前は *.htm を指定すると *.htm と *.html で2回 処理/表示
されてしまう、だったような気もしてきました。
# これは1つのファイルが2回処理されるので明らかに変

>秀丸は、DOSで動く訳ではないので、ファイル名を8.3形式で扱
>う必要はないと思います。

別に DOS で動いていたって 8+3 形式で扱う必要なんてありません。
逆に DOS で動いていなくても 8+3 形式が扱えても問題ないです。
そんなことは関係なくて、

・OS の標準の仕様でで3字で指定して4字以上を対象にできること
(標準のダイアログを使う全アプリケーションで)

・4字以上の拡張子をわざわざ処理するアプリケーションもある
(特にファイル管理を主目的とするアプリケーション)

というような秀丸以外のアプリケーションにおける現状があって、
それに対して秀丸のユーザが、こんな些細な点に対してどこまで
気にしていて、どのような動作を期待しているか?

といったところが問題なんだと思います。

秀丸の動作として、修正を入れてまでわざわざ後者である必要は
ないのではなく、現状の Windows での標準的な動作のままでも
良いんじゃないかとも思いますが、厳密な評価をされて困ること
もないでしょうし、そういった意味で前回は「Windows 互換」と
「厳密なチェック」の選択をチェックボックスにでもして環境設
定にすればいいのではないか、というような書き方にしました。

違いがわかっている DOS/Windows 自身の知識のある、いわゆる
パソコン自体の上級ユーザの人にとっては厳密なチェックのほう
がいいに決まってますからね。

それ以外の初級者や中級者のような利用者から見ると、他のアプ
リケーションと異なる挙動をするというのは混乱の元になるかも
しれません。

> 旧タイプの開くダイアログは、旧タイプということで、「8.3形
> 式」ですが、grepのダイアログは、「8.3形式」では表示されて
> いませんので、「8.3形式」で扱われること自体がまずいと思い
> ます。

どのようなタイプのダイアログでも、他のアプリケーションのダ
イアログでも、8+3 形式で表示されていることと、8+3 形式であ
つかっていること、というのは分離されています。

なので、表示が長いファイル名だからといって、扱いまで長いファ
イル名でなければまずいということはないという認識があるんじゃ
ないでしょうか。

>後は、秀丸担当さんのコメント待ちですね。

こういう書き方は時々ありますけど、コミュニティや意見交換を
バカにしているような否定的な意図が感じられて、ちょっとイヤ
な感じではあります。

[ ]
RE:08740 grepの不具合No.08741
TAKA さん 01/05/20 18:16
 
TAKA です。

>>後は、秀丸担当さんのコメント待ちですね。
>
>こういう書き方は時々ありますけど、コミュニティや意見交換を
>バカにしているような否定的な意図が感じられて、ちょっとイヤ
>な感じではあります。

誤解を与えたしまったようで、申し訳ありません。
現状の仕様がどうなっているのかと、今後どうするのかのコメント
待ちですね。というでした。


本題に戻りますが、「長いファイル名.TXT」というファイルがあっ
た場合にファイル名を「長い名~1.TXT」(8.3形式)でgrepしても
「該当するファイルはありません」というエラーメッセージが出る
ことからgrep自身はロングファイル名でないと認めてくれないよう
です。
えるさんとしては、拡張子を含まない部分はロングファイル名で拡
張子の部分だけが3文字までということで問題ないということでし
ょうか?
それとも、「長い名~1.TXT」でgrepされないこと自体が問題でしょ
うか?
私は、grep自身がロングファイル名で扱うのだから、拡張子もきち
んと(3文字以上)認識するのが正しいと思いますが。

[ ]
RE:08741 grepの不具合No.08747
える さん 01/05/20 22:46
 
>本題に戻りますが、「長いファイル名.TXT」というファイルがあっ
>た場合にファイル名を「長い名~1.TXT」(8.3形式)でgrepしても
>「該当するファイルはありません」というエラーメッセージが出る
>ことからgrep自身はロングファイル名でないと認めてくれないよう
>です。

・実は "長いフ~1.txt" や "長いフ~2.txt" などのファイル名違い
・実は grep の検索文字列が 長いファイル名.txt に存在しない

のどちらかではないですか? 3.08 だとひっかかるみたいですが。

>えるさんとしては、
(略)

私としては、

*.htm で *.html がひっかからないで欲しいけど、それを標準に
すると、Windows アプリといて非標準的になるので、オプション
機能でいいんじゃない?(自分は ON にして利用する)

さらに付け加えて、実現が面倒かもしれない機能をあげるならば、
厳密なマッチングを行う設定時には同様に DOS 互換のファイル
システムから引き継いでいる問題点の1つとして、「 *.* 」の意
図を「拡張子を持つファイル」にして「 * 」の意図を「すべての
ファイル」にして欲しいですね。
# "*." と違って、あんまり需要はなさそうなんだけど


[ ]
RE:08747 grepの不具合No.08748
TAKA さん 01/05/20 23:12
 
TAKA です。

>>本題に戻りますが、「長いファイル名.TXT」というファイルがあっ
>>た場合にファイル名を「長い名~1.TXT」(8.3形式)でgrepしても
>>「該当するファイルはありません」というエラーメッセージが出る
>>ことからgrep自身はロングファイル名でないと認めてくれないよう
>>です。
>
>・実は "長いフ~1.txt" や "長いフ~2.txt" などのファイル名違い

大変失礼しました。ファイル名が間違っていたようです。8.3形
式で正常にgrep出来ました。m(_ _)m
8.3形式を認めているということは、えるさんの言うとおり、現
状は正しい(不具合ではない)ですね。


>*.htm で *.html がひっかからないで欲しいけど、それを標準に
>すると、Windows アプリといて非標準的になるので、オプション
>機能でいいんじゃない?(自分は ON にして利用する)

どのような形にしろ、欲しい機能ですね。
マクロのgrepにも。


今回の話題とは直接関係ないのですが、「その他→動作環境→ユー
ザーインターフェース→ダイアログの種類」で、「開くのダイアロ
グ」を「旧、複数選択タイプ」にしているのですが、ファイル名は
ロングファイル名で表示されて、フォルダ名は8.3形式で表示さ
れています。統一した方がいいと思います。出来れば、ロングファ
イル名で。
問題なければ、お願いします。 > 秀丸担当さん

[ ]
RE:08748 grepの不具合No.08772
秀丸担当 さん 01/05/21 17:47
 
>>*.htm で *.html がひっかからないで欲しいけど、それを標準に
>>すると、Windows アプリといて非標準的になるので、オプション
>>機能でいいんじゃない?(自分は ON にして利用する)

*.txtで*.txt2もひっかかるのは えるさんの言われる通りだと思います。
以前に問題になっていたのは、*.htm;*.htmlで2重にファイルが表示
される問題でした。
オプションとするのは要望として検討しておきます。

>今回の話題とは直接関係ないのですが、「その他→動作環境→ユー
>ザーインターフェース→ダイアログの種類」で、「開くのダイアロ
>グ」を「旧、複数選択タイプ」にしているのですが、ファイル名は
>ロングファイル名で表示されて、フォルダ名は8.3形式で表示さ
>れています。統一した方がいいと思います。出来れば、ロングファ
>イル名で。

こちらも確認しました。
いちおう以前からの互換として残してある機能なので、あまり触れたく
ないですが、変ですね。検討します。

[ ]
RE:08730 grepの不具合No.08773
秀丸担当 さん 01/05/21 17:47
 
>>気がするのですが、なるほどマッチした長さが
>>0の場合の処理の問題だったわけですね(^^;
>
>推測ですが、多分そうでしょうね。

もともと\nだけではgrepは何もヒットしない仕様でしたが、
V3.04あたりから、改行だけの行でマッチした場合は例外的
に認めるということになっています。
たぶん要望があったと思われます。
しかし\nでの検索結果は確かに変です。どうしたものやら。

[ ]
RE:08772 grepの不具合No.08777
TAKA さん 01/05/21 19:24
 
TAKA です。

>以前に問題になっていたのは、*.htm;*.htmlで2重にファイルが表示
>される問題でした。

今回の問題とは別問題でしたか。失礼しました。


>オプションとするのは要望として検討しておきます。

よろしくお願いします。


>>今回の話題とは直接関係ないのですが、「その他→動作環境→ユー
>>ザーインターフェース→ダイアログの種類」で、「開くのダイアロ
>>グ」を「旧、複数選択タイプ」にしているのですが、ファイル名は
>>ロングファイル名で表示されて、フォルダ名は8.3形式で表示さ
>>れています。統一した方がいいと思います。出来れば、ロングファ
>>イル名で。
>
>こちらも確認しました。
>いちおう以前からの互換として残してある機能なので、あまり触れたく
>ないですが、変ですね。検討します。

これまた、よろしくお願いします。

[ ]
RE:08777 grepの不具合No.08778
TAKA さん 01/05/21 19:32
 
TAKA です。

>>オプションとするのは要望として検討しておきます。
>
>よろしくお願いします。

実際にオプションを用意してもらえるようでしたら、その時に、マ
クロのgrepに「ファイル名をフルパスで出力」というオプションを
追加して頂けたらと思います。

[ ]
RE:08773 grepの不具合No.08780
Arimac さん 01/05/21 23:58
 
>もともと\nだけではgrepは何もヒットしない仕様でしたが、
>V3.04あたりから、改行だけの行でマッチした場合は例外的
>に認めるということになっています。
>たぶん要望があったと思われます。
 
出来るようになってました<(_ _)>
ありがとうございました。

[ ]