Applekdz
@Applekdz

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

EmEditorでの効率の良い重複削除

EmEditorでお世話になっております。
私が期待するEmEditorでの効率の良い重複削除機能の結果は以下になります。

まず重複確認フォルダにテキストファイルAとBを入れておきます。

EmEditorで重複確認フォルダを指定します。

テキストファイルAの内容

B
C
D
E
F
G

テキストファイルBの内容

H

a

b

c

d

テキストファイルC→重複削除処理実行をするほうのファイルのマクロ処理対象の元のファイル内容
B
H
I
J

テキストファイルCの結果 テキストファイルAとBに書かれていた重複する行がなくなりました。テキストファイルAとBのどちらにもない行だけが残ります。

I
J

これを重複比較指定フォルダ、ファイルの機能にできると幸いです。

これは過去に作ったファイルから重複する文字列を簡単に一発削除できる機能です。

よろしくお願いいたします。

0

1Answer

次のようなマクロを書いて実行すればいいです。最初の行は、ファイルの存在するフォルダに書き換えてください。

sFolder = "E:\\Test\\";  // ファイル A, B, C が存在するフォルダ

var list = new Array();

editor.OpenFile( sFolder + "A.txt", 0, eeOpenAllowNewWindow );
nLines = document.GetLines();
for( y = 1; y <= nLines; ++y ) {
	list[list.length] = document.GetLine( y );
}

editor.OpenFile( sFolder + "B.txt", 0, eeOpenAllowNewWindow );
nLines = document.GetLines();
for( y = 1; y <= nLines; ++y ) {
	list[list.length] = document.GetLine( y );
}

editor.OpenFile( sFolder + "C.txt", 0, eeOpenAllowNewWindow );
var filters = document.filters;
for( i = 0; i < list.length; ++i ){
	if( list[i].length != 0 ) {
		filters.AddFind( list[i], eeFindLogicalOr, 0 );
	}
}
document.filters = filters;
editor.ExecuteCommandByID(3927);  // フィルター行をすべてブックマーク
document.Filter("",0,0,0,0,0);
editor.ExecuteCommandByID(4589);  // この文書のブックマークされた行を削除
1Like

Comments

  1. @Applekdz

    Questioner

    ありがとうございます。思い通りの動作をしました。
    マクロを書いて頂き、ありがとうございます。

Your answer might help someone💌