秀丸エディタ: 重複行を削除する方法(正規表現で)

重複行を削除する(正規表現で)

秀丸で(正規表現を使って)重複行を削除する方法を紹介します。
この方法だと、マクロプログラムを導入する必要もなく、 誰でも手軽にできるのでおすすめです。

大まかな流れとしては次の通りです。

  • データをソートする
  • 置換機能を使って重複行を削除
  • 重複行がなくなるまで置換処理を実行

例えば、同じデータの行が3行ある場合は2回置換処理を実行し、 5行ある場合は3回置換処理を実行します。

では実際にデータの重複行を削除する方法を説明します。

重複行を削除するデータ

サンプルデータは次の通りです。
重複している行として「aaa」が3行、「bbb」が2行あります。

aaa
bbb
ccc
aaa
ddd
fff
bbb
aaa

データをソートする

まずは対象データを選択します。

データを選択した状態で、
メニューの「編集」 ⇒ 「変換」 ⇒ 「ソート」をクリック。

ソート

ソート画面の上で「並べ方」を選択できます。 昇順・降順どちらでもいいので好きな方を選んで「OK」ボタンをおします。

ソート画面

次のようにデータがソートされます。

aaa
aaa
aaa
bbb
bbb
ccc
ddd
fff

置換処理で重複行を削除

次に置換処理を実行します。 (ソートが終わった段階でデータの選択は解除しても大丈夫です)

メニューの「検索」 ⇒ 「置換」をクリック。

置換画面の検索欄に「(^.+\n)\1」と入力、 置換欄に「\1」と入力し、正規表現にチェックを入れて 「全置換」をクリック。

(補足)
「(^.+\n)\1」で重複している2行を意味します。
「\1」を使った指定方法について知りたい方は、 秀丸公式サイトの「タグ付き正規表現」のページを見てください。

【秀丸公式サイト】\1・\2...、\g{数字}、 \g{-数字} 一般的正規表現互換のタグ付き正規表現

置換

「2個の置換を行いました」のメッセージボックスが出るので「OK」をクリック。

重複行削除

1回目の置換後のデータは次のようになっています。

aaa
aaa
bbb
ccc
ddd
fff

「aaa」がまだ2行残っていて、「bbb」の重複行はなくなりました。

もう一度、先ほどと全く同じ置換処理を行います(図は省略)。
2回目の置換後のデータは次のようになります。

aaa
bbb
ccc
ddd
fff

これで重複行がなくなりました。

重複行がなくなったことを確認するには

データ量が多い場合は、 目視では重複行がなくなったことがわかりにくいと思います。

確認するには置換処理を実行してみて、 下図のように「見つかりませんでした」 とメッセージボックスが表示されれば重複行はなくなっています。

重複行がなくなった