grepして置換だとメモリ不足になりやすいNo.00204
elbow さん 07/01/25 10:04
 
こんにちは

改行無しのファイルを句点等で改行を挿入しようとする場合
grepして置換で
検索する文字列: 。
置換する文字列: 。\n
検索するファイル:*.txt
等とすると思うのですが、実際に実行500kb程度のファイルでメモリ不足になり
「メモリ不足です。死にます」で秀丸が落ちます。置換結果のレポート作成の構造上
の問題な気もしますが
一応気がついたので報告しておきます。
もちろん秀丸で開いてから置換コマンドでは問題ないので実害は無いかも知れないで
すが。

環境: windowsXP SP2 + 秀丸6.50β15

[ ]
RE:00204 grepして置換だとメモリ不足になNo.00215
秀丸担当 さん 07/01/25 17:09
 

>改行無しのファイルを句点等で改行を挿入しようとする場合
>grepして置換で
>検索する文字列: 。
>置換する文字列: 。\n
>検索するファイル:*.txt
>等とすると思うのですが、実際に実行500kb程度のファイルでメモリ不足になり
>「メモリ不足です。死にます」で秀丸が落ちます。置換結果のレポート作成の構造上
>の問題な気もしますが
>一応気がついたので報告しておきます。
>もちろん秀丸で開いてから置換コマンドでは問題ないので実害は無いかも知れないで
>すが。

この条件でやると、結果レポートの量がものすごいことになってしまいますね。
これは良くないので、いっそのこと結果レポートは元の内容は表示せず、ファイ
ル名と行番号だけにしたほうがよかったかもしれません。どうでしょうか。

[ ]
RE:00215 grepして置換だとメモリ不足になNo.00217
Iranoan さん 07/01/25 18:52
 
 秀丸担当さん今日は、Iranoan です。
> いっそのこと結果レポートは元の内容は表示せず、ファイ
> ル名と行番号だけにしたほうがよかったかもしれません。どうでしょうか。
 検索、置換文字列に改行が含まれていると、どうせ「タグジャンプ」をして
も編集位置とずれるのではないでしょうか? それなら、ファイル名だけでも良
いと思います。

[ ]
RE:00217 grepして置換だとメモリ不足になNo.00219
elbow さん 07/01/25 23:36
 
こんにちは

> いっそのこと結果レポートは元の内容は表示せず、ファイ
> ル名と行番号だけにしたほうがよかったかもしれません。どうでしょうか。

個人的にはやはり内容を全く出さないと言うよりかは出した方がいいような気がしま
す。
(どの辺が変更されたのかが見れた方がいいような気がします)
案としては下記4つくらいでしょうか。
私としては現行仕様のままでいいような気もしなくもないですが。
他の方の意見も聞いてみたいところです。

・現行仕様のまま
   →特殊なケースでメモリ不足になる。見にくい?

・検索文字列が有るか無いかに関わらず行頭から見た目上の1行分だけ表示する
   →表示が中途半端?

・行頭から検索文字列までの部分文字列だけ表示する
   →コストがかかる?

・ファイル名と行番号だけ表示する
   →不親切?

[ ]
RE:00219 grepして置換だとメモリ不足になNo.00223
白雲斎 さん 07/01/26 07:20
 
白雲斎です。

・先頭から規定文字数のみ表示
・ファイル名と処理個数のみの表示
のどちらかに1票

[ ]
RE:00223 grepして置換だとメモリ不足になNo.00228
秀丸担当 さん 07/01/26 10:34
 

> 検索、置換文字列に改行が含まれていると、どうせ「タグジャンプ」をして
>も編集位置とずれるのではないでしょうか? それなら、ファイル名だけでも良
>いと思います。

改行の前が見たいか後が見たいかの解釈によって、ずれると思えることもあるか
もしれないですが、改行が入るたびにどんどんずれていくとか、そういったこと
はないと思います。

ちなみに従来からあるgrepは、文字数の制限があります。
ですがこの制限は、grep結果を元に置換を行うマクロの弊害になっているといの
もあります。

とりあえず無難なのはファイル名と行番号なのがいいかと。

[ ]
RE:00228 grepして置換だとメモリ不足になNo.00249
elbow さん 07/01/30 01:00
 
こんにちは。

>とりあえず無難なのはファイル名と行番号なのがいいかと。

こちらの件ですが秀丸6.50β16で修正されていることを確認しました。
ちょっと使ってみた感じではこれはこれでいいようです。
ただ、grep置換実行時に「一行の強調表示の計算に2秒以上かかっています。
一時的に強調表示を無効にしますか?」ダイアログが出やすいような
気がします。

[ ]
RE:00249 grepして置換だとメモリ不足になNo.00255
秀丸担当 さん 07/01/30 12:37
 

>こちらの件ですが秀丸6.50β16で修正されていることを確認しました。
>ちょっと使ってみた感じではこれはこれでいいようです。

そうですか。
問題無ければこれにしようかと。

>ただ、grep置換実行時に「一行の強調表示の計算に2秒以上かかっています。
>一時的に強調表示を無効にしますか?」ダイアログが出やすいような
>気がします。

そのメッセージが出てしまっていました。確認することができました。
今回の修正でこのメッセージが出るようになったわけではないと思います。
出ないように修正してみます。

[ ]
RE:00255 grepして置換だとメモリ不足になNo.00284
elbow さん 07/01/31 01:18
 
こんにちは。

>そのメッセージが出てしまっていました。確認することができました。
>今回の修正でこのメッセージが出るようになったわけではないと思います。
>出ないように修正してみます。

こちらの件も秀丸6.50β17で修正されていることを確認しました。

[ ]