Grep異常終了No.32224
MAIKU さん 13/05/06 11:55
 
初めて投稿させて頂きます。

日本語を含むテキストファイルに対してGrep検索を行うと、
ある程度のファイル数を検索したところで、
下記メッセージが表示され強制終了となってしまいます。

「秀丸エディタは動作を停止しました」

英文のテキストファイルに対しては問題なく使えております。
ファイル名を半角に変えるなど色々と試してみましたが
解決できず困っております。

対策方法があるようでしたら、
ご指導お願い致します。

尚、使用環境は下記です。
・OS: windows 7 32bit
・秀丸ver: ver8.22 32bit
・Grep設定: 常に文字数制限を解除にチェック

[ ]
RE:32224 Grep異常終了No.32228
秀丸担当 さん 13/05/07 09:21
 

>日本語を含むテキストファイルに対してGrep検索を行うと、
>ある程度のファイル数を検索したところで、
>下記メッセージが表示され強制終了となってしまいます。

バグ情報ありがとうございます。
ご不便をおかけして申し訳ありません。

英文では大丈夫で、常に文字数制限を解除にチェックのときに起きるということ
で、おそらくUnicodeのファイルを多くgrepしたときの不具合だと思います。

もしその問題だとしたら、現状ではV8.30のβ版での対策があります。
以下のページの「次のバージョンのβ版はこちら」のところから試していただく
ことができます。

http://hide.maruo.co.jp/software/hidemaru.html

V8.30は今月中に正式にする予定です。

[ ]
RE:32228 Grep異常終了No.32229
MAIKU さん 13/05/07 09:51
 
ご連絡ありがとうございます。

下記バージョンで試してみましたが、
やはり何ファイルか検索したところで、
異常終了してしまいます。

8.30 Beta 38

尚、各テキストファイルのサイズは10KB〜90KBで、
検索対象となるファイル数は1000程度です。

[ ]
RE:32229 Grep異常終了No.32231
秀丸担当 さん 13/05/07 10:12
 

>下記バージョンで試してみましたが、
>やはり何ファイルか検索したところで、
>異常終了してしまいます。

そうでしたか。すみません。
だとすると、こちらで確認されていない問題のようで、お手数をおかけして申し
訳ありませんがいろいろ教えてもらえると助かります。

もし異常終了したときにdumpが出力されたというようなメッセージが出ていた場
合、dumpの内容を送ってほしいです。

そういうメッセージが出ていないとしたら、差支えなければ設定内容をファイル
に保存したものと、サンプルとなるファイル(でたらめな内容でいいので)を送
ってもらえるとこちらでも再現できるかもしれません。
設定内容は、[その他]→[設定内容の保存/復元]でファイルに保存することがで
きます。

送っていただける場合、"PEH00775@nifty.com"まで秀丸担当宛であることを書い
て送ってもらえると助かります。

[ ]
RE:32231 Grep異常終了No.32232
MAIKU さん 13/05/07 10:47
 
dumpファイルは出力されませんでしたが、
関連データをE-mailにて送付致しました。
ご確認お願い致します。

[ ]
RE:32232 Grep異常終了No.32233
秀丸担当 さん 13/05/07 13:54
 

ファイルありがとうございます。
こちらでも再現させることができました。

条件として、grepを最小化して実行と、折り返し文字数がウィンドウ幅に合わせ
る設定と、プロポーショナルフォントであることが関係していました。

V8.30の次のベータ版で修正させていただきます。

[ ]
RE:32233 Grep異常終了No.32234
MAIKU さん 13/05/07 16:08
 
ご検討頂きありがとうございました。

[ ]
RE:32234 Grep異常終了・ドイツ語No.32343
MAIKU さん 13/06/12 10:27
 
ver.8.30にて無事解決です。
ありがとうございました。

日本語テキストは解決できたのですが、
ドイツ語テキストを含むファイルで
異常終了が発生しました。

実行命令: grepreplace
対象テキストのエンコード形式:Unicode(UTF-8)
エラーメッセージ:
 エンコードの解析エラー
 読み込もうとしたエンコードの種類
  日本語(EUC)

同ファイルに対して、replaceallを実行した場合は
問題なく置換できますが、grepだとエラーが出てしまいます。
尚、英文のみのテキスト(UTF-8)では問題なくgrep置換できてます。

対処方法を検討頂けると幸いです。



[ ]
RE:32343 Grep異常終了・ドイツ語No.32344
秀丸担当 さん 13/06/13 11:55
 

ご確認ありがとうございます。
また追加のバグ情報ありがとうございます。

>実行命令: grepreplace
>対象テキストのエンコード形式:Unicode(UTF-8)
>エラーメッセージ:
> エンコードの解析エラー
> 読み込もうとしたエンコードの種類
>  日本語(EUC)

このメッセージの内容によりますと、前のような強制終了してしまうような問題
とは異なり、メッセージの通りエンコードの解析でエラーになっているというこ
とになると思います。

試しにドイツ語に翻訳したこの会議室の内容でUTF-8のファイルを作ってみたと
ころでは、Shift-JISと誤認する場合があったり、EUCと誤認する場合がありまし
た。
テキストファイルのエンコードはBOMが無い場合は確実に判断できる方法は無く、
解析して適切と思わしきもので判断するしかないです。

UTF-8の場合、名前を付けて保存で「BOMを付ける」で保存すると確実にUTF-8で
あると判断できます。
(または[ファイル]→[エンコード]→[BOM]をONにして上書き保存)
ただファイルを他のソフトでも読み込むような場合、BOMに対応していないと先
頭が文字化けする可能性があるので注意が必要です。

自動判定の方法は、「開く」のダイアログで「自動判定の設定...」で変更でき
ます。
(または上級者向け設定で[その他]→[動作環境]→[ファイル]→[エンコード
1])
自動判定の設定で、UTF-8を上位にもってきて「優先順位に従う」にするとUTF-8
として解析されやすくなります。
ただ、本当はShift-JISやEUCとして認識してほしい場面で逆効果となる可能性が
あります。

もしBOMを付けて他のソフトの兼ね合いも大丈夫であれば、BOMを付けて保存され
ることをお勧めします。


別の回避策としては、事前にUTF-8であることがわかっていてマクロでgrepして
置換するのであれば、明示的にUTF-8を指定するといいと思います。

例:
grepreplace "xxxx", "yyyy", "*.txt", ".", utf8;


grepして置換のときには警告が出て、普通に開いたときには警告が出ずにUTF-8
として開けるとしたら、ちょっと原因がわかりませんが、もしかしたらヒストリ
から開くときに前回のエンコードを使う設定にされているとそういうことも起こ
り得ると思います。
(上級者向け設定で[その他]→[動作環境]→[ファイル]→[ヒストリ]関連)

[ ]
RE:32344 Grep異常終了・ドイツ語No.32345
MAIKU さん 13/06/13 12:46
 
対処方法ありがとうございます。
下記(1)と(2)の両方を適用することで解決できました。


(1) 自動判定
[その他]→[動作環境]→[ファイル]→[エンコード1]
UTF-8をShift-JISの次にもってきて「優先順位に従う」

(2) grepreplace .... ,utf8;

[ ]