Notepad++ で重複した行を削除し、行を 1 つだけ残すことは可能ですか?
ベストアンサー1
Notepad++ バージョン 6 以降では、検索と置換ダイアログで次の正規表現を使用できます。
^(.*?)$\s+?^(?=.*^\1$)
何も置き換えません。これにより、重複するすべての行からファイル内の最後の出現が残ります。
そのためにソートする必要はなく、重複行はファイル内のどこにでも存在できます。
「正規表現」と「. 改行に一致」のオプションをチェックする必要があります。
^
行の先頭に一致します。(.*?)
任意の文字に0回以上一致しますが、できるだけ少ない回数一致します(行に正確に一致します。これは「. 改行に一致」オプションのために必要です)。一致した行は括弧で囲まれているため保存され、次のようにアクセスできます。\1
$
行末に一致します。\s+?^
この部分は、次の行の先頭までのすべての空白文字 (改行文字!) と一致します ==> これにより、一致した行の後の改行文字が削除され、置換後に空の行がなくなります。(?=.*^\1$)
これは肯定的な先読みアサーションです。これはこの正規表現の重要な部分で、ファイル内のどこかにまったく同じ行が続く場合にのみ行が一致 (および削除) されます。