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