|
>「案一」
「案二」
一般的には、元データをソートして、同じ行を削除します。
MS-DOS のソートは、ファイルのサイズに制限がありますから、
Vector とかのサイトで、ソートプログラムを探してください。
「同じ行を削除」は処理が遅いのですが b0.mac でも出来ます。
一般的なソートではメールアドレスをサイトでソートできません。
b4.mac は a@b ==> b@a に入れかえる処理です。その後ソートして、
また b4.mac で b@a ==> a@b に入れかえます。少しは見やすいでしょう ...
// b0.mac
// "Delete Same Line "
ppkn_del_same_line1:
question "Delete Same Line ?";
if( ! result ){ endmacro; }
escape; gofiletop; disabledraw; disableinvert;
selectline; // delete same line - 行
$wk1 = gettext(seltopx,seltopy,selendx,selendy);
escape; down;
while( code != eof){
selectline; // delete same line - 行
$wk2 = gettext(seltopx,seltopy,selendx,selendy);
escape;
if( $wk1 == $wk2 ){
deleteline;
} else {
$wk1 = $wk2; down;
}
}
gofiletop; enabledraw;
endmacro;
// b1.mac
// 空白、スペース、タブを削除
if( code == 0x09 ){ endmacro; } // debug
replaceallfast "[\\t\x20\x81\x40]+", "", regular, inselect;
// 改行だけの行を削除
replaceallfast "^\n", "", regular, inselect;
gofiletop;
endmacro;
// b2.mac
// 行末の .or.jp ==> .ne.jp に置換
replaceallfast "\\.or\\.jp$", ".ne.jp", regular, inselect;
// gofiletop;
endmacro;
// b3.mac - ヲィヲィ、そんなメールアドレスが !!!
gofiletop;
// searchdown "^[^@]+$", regular; // @ を含まない行
// searchdown "^.*@.*@.*$", regular; // @ を 2 個以上含む行
// searchdown "^@.*$", regular; // @ で始まる行
// searchdown "^.*@$", regular; // @ で終わる行
searchdown "^(.*@.*@.*|@.*|.*@|[^@]*)$", regular; // 上のまとめ
if( result ){
localgrep "^(.*@.*@.*|@.*|.*@|[^@]*)$", regular; // 上のまとめ
}
endmacro;
// b4.mac
// a@b ==> b@a に入れかえる
if( code == 0x09 ){ endmacro; } // debug
replaceallfast "^[^@]+\\f@\\f.+$", "\\2@\\0", regular, inselect;
// gofiletop;
endmacro;
この件はこれでおしまいです。
あと、「マクロの会議室」に質問してください。
|
|