◀一般トップへ
  • 4099 重複改行の置換
    • 4101 RE: 重複改行の置換
      • 4106 RE2: 重複改行の置換
        • 4109 RE3: 重複改行の置換
  • [4099] 重複改行の置換 xla 2004年10月17日 13:30

    改行が重なって2行空きになっているのを1行空きにしたいとき、
    秀丸だと\n\n\n→\n\nの置換でできたんですが、sakuraエディタ
    だとどうすればいいんでしょうか。
    • [4101] RE: 重複改行の置換 すい 2004年10月18日 01:16

      >改行が重なって2行空きになっているのを1行空きにしたいとき、
      >秀丸だと\n\n\n→\n\nの置換でできたんですが、sakuraエディタ
      >だとどうすればいいんでしょうか。

      私は

      1) 全改行コードを \x01 とかの「普通テキスト中には有り得ないコード」に置換する。
        [\r\n]+ ⇒ \x01

      2) 変換後の「連続している \x01」を置換でまとめる。
        \x01\x01+ ⇒ \x01\x01

      3) \x01 を改行コードに置換して戻す。
        \x01 ⇒ \r\n

      というような処理をおこなうマクロ用意してやっています。


      ↓ DelBLDup.MAC という名前でマクロフォルダに保存して利用。
      -----
      //キーボードマクロのファイル

      // 選択範囲の連続した空行を削除する。
      // 範囲選択せずに実行した時はファイル全体に対して処理される。

      S_ReplaceAll('[\\r\\n]+', '\\x01', 148); //
      S_ReplaceAll('\\x01\\x01+', '\\x01\\x01', 148); //
      S_ReplaceAll('^\\x01+', '\\x01', 148); //
      S_ReplaceAll('\\x01', '\\r\\n', 148); //
      S_ReDraw(0); // 再描画
      -----
      「マクロの 作り方/使い方 のヒント」 # これももう内容古いな
      http://www.egroups.co.jp/files/sakura-editor/User/MACRO/HINT.TXT
      • [4106] RE2: 重複改行の置換 げんた 2004年10月20日 00:02

        >1) 全改行コードを \x01 とかの「普通テキスト中には有り得ないコード」に置換する。
        >  [\r\n]+ ⇒ \x01
        1行1固まりのメモリでデータを管理しているので,大きいファイルに対してこのように1行にまとめる操作をするとメモリコピーが頻発してめちゃめちゃ遅くなりそうですが...
        • [4109] RE3: 重複改行の置換 すい 2004年10月20日 04:22

          >>1) 全改行コードを \x01 とかの「普通テキスト中には有り得ないコード」に置換する。
          >>  [\r\n]+ ⇒ \x01
          >1行1固まりのメモリでデータを管理しているので,大きいファイルに対してこのように1行にまとめる操作をするとメモリコピーが頻発してめちゃめちゃ遅くなりそうですが...

          はい。特に長い行が多い場合、処理に時間がかかります。
          ファイルサイズが大きい場合もやはり時間がかかります。
          でも他に手が無いので。
          手作業なんかよりはるかにマシだし、ってことで。
          PPAやなんかのマクロで一生懸命処理させるともっと時間かかりますし。
          ファイル全体に対して処理するとかなら perl やなんかに投げるという手もありかもしれませんが。