『サクラエディタ』で「選択文字含む行削除」「選択文字含まない行削除」を実現
私は普段から『サクラエディタ』というWindows用テキストエディタ(フリーウェア)を、備忘録や会議メモだけではなくデータ加工や編集、プログラムの記述にまで活用してます。それぞれの作業を行う上で私が必要とするような編集機能は標準で実装されているため、過度に求めることさえなければ今回のような細工を弄する必要はありません。
今回私が欲した機能とは、簡易的なデータ加工や分析作業を実施する際に生じたニーズで、特定の文字列を含む行だけを残してそれ以外の行をすべて削除すること。そしてその逆。特定の文字列を含む行だけを残す。そして、その逆に含む行だけを削除するというもの。
・選択文字含む行削除
・選択文字含まない行削除
割と頻繁にデータ調査・分析やデータ一次加工のためにエディタ経由で作業をするため、この機能が一発で実現できるのは非常にありがたく、Grepや文字列検索などを利用して調査していたのが馬鹿らしくなります。
まぁ、ずぶの素人がネットで参考になる情報を拾い集めたり、キーマクロの記録をしながら作ったコードなので、対象とする文字列によっては想定通り動作しない部分は解決してませんがご愛嬌ということで。おそらく、正規表現に対する理解が決定的に不足しているからだと思いますが・・・
実際にマクロを実行した例を以下に紹介します
例1:「1月」を含む行を削除する
<実施前>
<実施後>
例2:「1月」を含む行以外を削除する
※こちらについては、改行だけの行も削除されています
<実施前>
<実施後>
とりあえず私にとってはこれで事足りているため、これ以上は手を加えるつもりはありませんが、知識や技術力をお持ちの方が完全版をどこかで公開しているのを見つけたら、即乗り換えます!。
ちなみに私は、この機能をマクロ登録してツールバーにアイコン表示させ、いつでも利用できるように設定&活用してます。
■sakura_選択文字含む行削除.js
// 選択範囲のテキストを取得
var text = Editor.GetSelectedString(0);
// 変換後のテキストを出力
if ( text !== '' ) {
text = '.*' + text + '.*\r\n';
Editor.ReplaceAll(text, '', 6148);
// 置換オプション //
// 0x004 4 正規表現 //
// 0x800 2048 検索キーを履歴に登録しない //
// 0x1000 4096 検索キー・オプションを元に戻す //
Editor.ReDraw(0);
}
■sakura_選択文字含まない行削除.js
// 選択範囲のテキストを取得
var text = Editor.GetSelectedString(0);
// 変換後のテキストを出力
if ( text !== '' ) {
text = '^(?!.*' + text + ').*\r\n';
Editor.ReplaceAll(text, '', 6148);
// 置換オプション //
// 0x004 4 正規表現 //
// 0x800 2048 検索キーを履歴に登録しない //
// 0x1000 4096 検索キー・オプションを元に戻す //
Editor.ReDraw(0);
}
※実行環境( サクラエディタ v2.4.0.2686 32bit (tag v2.4.0) )