【質問】置換に関してNo.36770
zurarin66 さん 18/08/22 14:23
 
置換に関して教えてください。

秀丸エディタ64bit版 Ver.8.83を使って、テキストファイルの文字置換しようとして
いますが、時間が非常にかかります。
(60秒の変換時間で150個の程度の置換個数)

置換したいテキストファイルは、バイナリをテキスト変換したファイルで、サイズが
41MB程度あります。

テキストの形式としては、
 00(半角スペース)01(半角スペース)02(半角スペース)・・・
となっており、改行コードがありません。

文字置換としては、
 半角スペース => \n(改行コード)
をしようしており、変換個数は "14,082,048 個"あります。

秀丸エディタの設定としては、
 動作環境 - パフォーマンスの詳細
  メモリを使用する最大サイズ  :2000MB
  テンポラリファイルを〜高速化:有効
  秀丸エディタの瞬間起動      :有効 / 10
  やり直しバッファサイズ      :10240KB
  クリップボード履歴〜サイズ  :999KB

変換の設定は、
 検索    : (半角スペースを直接入力)
 置換    :\n
 有効チェックボックス
  正規表現:HMJRE.DLL V5.04
  一周する
で一括置換に時間がかかり、60秒の変換時間で150個の程度の置換個数です。
(サクラエディタ   Ver. 2.2.0.1 で実行すると、60程度て全置換完了します。)

高速化する手段があれば、教えて頂けないでしょうか?

[ ]
RE:36770 【質問】置換に関してNo.36771
秀丸担当 さん 18/08/22 16:22
 

確かに改行の長い無い一行の扱いは苦手とするところで、いろいろ遅いことになって
しまっていて、秀丸エディタの課題でもあります。
現状でなんとかするとしたら、このパターンで使えそうなこととして、バイナリモー
ドで開くとなんとかする方法も考えられると思います。

バイナリモードで開くには、[その他]→[動作環境]→[ファイル]の『「バイナリモー
ドで開く」を使う』をONにして開くダイアログから開く方法や、ファイルを開いた後
にキー割り当てされた「バイナリモード」コマンドを使ってできます
または、[その他]→[メニュー編集]で、「ファイル」メニューの「バイナリモード」
をONにしておくとやりやすいです。

例えば、ファイルの内容が
AB CD DE
だとして、バイナリモードで開くと、
41,42,20,43,44,20,44,45,
となります。
バイナリモードの場合は、適当なところに改行が入るようになって、テキストとして
編集しやすくなっていて、保存時は見た目上の改行は無視されます。
置換で、「20,」を「0D,0A,」(または改行=LFの場合「0A,」)にして置換すると、
無理矢理ですが、このケースではなんとかなると思います。


[ ]
RE:36771 【質問】置換に関してNo.36772
zurarin66 さん 18/08/22 17:20
 
ご回答ありがとうございました。
"バイナリで開く"を使用すると、大分変換が早くなりました。
アドバイスありがとうございました。

改行されないテキストの置換は、遅かったんですね。
気をつけておきます。

以上、ありがとうございました。

[ ]
RE:36772 【質問】置換に関してNo.36788
秀丸担当 さん 18/09/05 09:31
 

別の手段として変換モジュールを使う方法がありました。
colderさん作の正規表現置換で、これを使うと高速にできました。
https://hide.maruo.co.jp/lib/hmconv/replaceregex.html

秀丸エディタの機能としても、通常の全置換とは違う、まるごと入れ替えるような方
式の置換を追加します。
V8.85β3で置換ダイアログの全置換▼のドロップダウンにクイック全置換という機能
を追加してみています。
以下のページの下のほうの先行開発バージョンはこちらから試していただくことがで
きます。
https://hide.maruo.co.jp/software/hidemaru.html

[ ]