サクラエディタで大量のテキストを加工していると、「一定行数ごとに同じ番号を振りたい」という場面があります。特にログ整形やテストデータ作成では、4行ごと・2行ごとなどの規則的な連番付与が必要になることも少なくありません。この記事では、サクラエディタで「a」を4行単位で01、02、03…のような連番へ自動変換する方法を、初心者向けに分かりやすく解説します。実際に使える簡単なマクロ例も掲載しているので、そのままコピペして利用できます。
やりたい変換内容を整理する
今回のようなケースでは、以下のようなデータがあります。
XXXa YYYa XXXa YYYa XXXa YYYa XXXa YYYa
これを4行単位で同じ番号に変換したいという内容です。
XXX01 YYY01 XXX01 YYY01 XXX02 YYY02 XXX02 YYY02
つまり「4行ごとに番号を+1する」処理が必要になります。
サクラエディタで使える簡単なJavaScriptマクロ
サクラエディタではJavaScript形式のマクロが利用できます。
以下のマクロを使用すると、4行ごとに同じ番号を付与できます。
// 4行ごとに連番を振る
var text = Editor.GetSelectedString(0);
var lines = text.split("\r\n");
var num = 1;
for(var i = 0; i < lines.length; i++) {
var seq = ("0" + num).slice(-2);
lines[i] = lines[i].replace(/a$/, seq);
if((i + 1) % 4 == 0) {
num++;
}
}
Editor.InsText(lines.join("\r\n"));
このマクロでは、末尾の「a」を2桁連番へ変換しています。
マクロの使い方
初めてサクラエディタのマクロを使う場合は、以下の流れで実行できます。
- 対象テキストを選択
- 「マクロ」→「名前を指定して実行」
- .jsファイルを指定
または「共通設定」からマクロ登録しておくと便利です。
実際の動作イメージ
例えば以下の入力。
XXXa YYYa XXXa YYYa XXXa YYYa XXXa YYYa
実行後はこうなります。
XXX01 YYY01 XXX01 YYY01 XXX02 YYY02 XXX02 YYY02
4行ごとに番号が増えていることが分かります。
「4行ごと」を変更したい場合
もし「2行ごと」「6行ごと」などへ変更したい場合は、この部分を修正します。
if((i + 1) % 4 == 0)
例えば2行ごとなら以下です。
if((i + 1) % 2 == 0)
非常に柔軟に変更できます。
3桁連番にしたい場合
99を超える可能性がある場合は、3桁化しておくと安心です。
以下へ変更します。
var seq = ("00" + num).slice(-3);
すると001、002、003の形式になります。
末尾が「a」以外でも応用可能
今回の例では「a」を置換していますが、別文字でも利用できます。
例えば以下。
- IDx → ID01
- TEST# → TEST01
- AAA? → AAA01
replace部分を書き換えるだけで応用できます。
正規表現を使って安全に置換する理由
今回のマクロでは以下を使っています。
/a$/
これは「行末のaのみ」を意味します。
つまり途中に含まれるaは置換しません。
大量データでは、意図しない置換を防ぐため非常に重要です。
選択範囲だけ処理するメリット
このマクロは選択範囲のみを対象にしています。
そのため、ファイル全体を壊しにくいメリットがあります。
特にログや設定ファイル編集では、必要範囲だけ加工できるのは便利です。
大量データではバックアップ推奨
サクラエディタのマクロは強力ですが、一括置換なので誤実行時の影響も大きいです。
そのため以下がおすすめです。
- 実行前保存
- テストデータで確認
- 数行だけで動作確認
特に正規表現編集ではバックアップが重要です。
さらに高度なことも可能
サクラエディタのJavaScriptマクロでは、さらに以下も可能です。
| 処理 | 内容 |
|---|---|
| 日付挿入 | 現在日時付加 |
| CSV生成 | 列自動整形 |
| ランダム文字列 | ID生成 |
| 条件分岐 | 特定行のみ変更 |
単純な置換以上に、自動化ツールとして非常に優秀です。
まとめ
サクラエディタではJavaScriptマクロを利用することで、「4行ごとに同じ連番を振る」といった規則的なテキスト加工を簡単に自動化できます。
今回のように「a」を01、02、03へ変換する場合は、行数カウントとreplace処理を組み合わせるだけで実現可能です。
特に大量データを手作業で編集するとミスが起きやすいため、マクロ化しておくと作業効率が大きく向上します。まずは今回のサンプルをそのまま試し、自分の用途に合わせて少しずつカスタマイズしていくのがおすすめです。


コメント