技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

サクラエディタの置換機能を使った簡単な独自ソート

サクラエディタの機能として昇順・降順ソートが用意されていますが、それ以外の独自の条件でソートを行いたい場合、置換機能を上手く使うことでソートできる場合があります。
改行コードを一時的に置き換えて1行のファイルにするのと、参照機能で並び替えを行うのがポイントです。
マクロとして保存すれば、繰り返し実行することもできます。
 
本当はjavaC#等のプログラムでソートするべきだとは思いますが、障害対応等で急ぎで作業する必要がある場合に使えるテクニックです。
 
----
 
例えば、下記のCSVファイルについて、2項目目が"END"のレコードを一番最後のレコードに持って行きたいとします。
 
1,DAT
2,DAT
3,END
4,DAT
5,DAT
 
その場合、下記のように置換すると、上手くソートできます。
(改行コードはCRLFとします)
 
1.改行コードを独自の文字(ファイル中に出てこない任意の文字)に置き換える
置換前:\r\n
置換後:@
 
1,DAT@2,DAT@3,END@4,DAT@5,DAT@
 
2.参照機能により、"3,END@"を一番後ろに移動する
置換前:(.+@)(.+,END@)(.+@)
置換後:${1}${3}${2}
 
1,DAT@2,DAT@4,DAT@5,DAT@3,END@
 
3.2の操作について、"END"のレコードが一番最初にきた場合の考慮でもう一度置換
(2の操作だと"END"のレコードが一番最初にきた場合に置換条件を満たさない)
置換前:(.+,END@)(.+@)
置換後:${2}${1}
 
1,DAT@2,DAT@4,DAT@5,DAT@3,END@
 
4.独自の文字を改行コードに戻す
置換前:@
置換後:\r\n
 
1,DAT
2,DAT
4,DAT
5,DAT
3,END