1 件の投稿を表示中 (合計 3 個)
  • 作成者
    投稿
  • #5064
    fuku29
    メンバー

    初心者的な質問ですいません。

    「abc」という文字列が入っている行を全部消したいのですが、どのようにすればいいのでしょうか。

    「abc」を検索して、検索された文字の行を消す、というマクロはひとつつくってみましたが、そのマクロをF4で何度も実行したり一時オプションで回数を指定したりするには、ファイルが巨大すぎるのです・・・

    お察しの方もいるかもしれませんが、サイトのログファイルを整理したいのです。参考書にも載っているので、みなさんよくやられていると思うのですが・・・ :-?

    #5067
    takuya
    参加者

    ちょうど同じような処理をしていたところなので、私の考えた選択肢をマクロにしてみました。

    幾つか方法はあると思います。
    0)マクロ無し
    マクロ使わないなら、EmEditorでTab区切りCSV化しEXCELに貼付けてソートして削除が楽かと。

    1) 正規表現を工夫するとか
    正規表現なら置換ダイアログだけでOK。

    document.selection.Replace( “.*abc.*”, “”, eeFindReplaceRegExp+eeReplaceAll );//*abc*を検索して空白に
    document.selection.Replace( “^n”, “”, eeFindReplaceRegExp+eeReplaceAll );//空白行を削除

    2)JavaScriptっぽくマクロ処理するなら

    Redraw = false;
    document.selection.SelectAll();
    lines = document.selection.Text.split(/n/g);
    for( i in lines){
    if( lines.indexOf(“abc”) > -1 ){
    lines.splice(i,2);
    }
    }
    document.selection.Text = lines.join(“”);
    document.selection.Collapse();
    Redraw = true;

    3)7.0版のみで動作させるマクロ、

    この処理が早いと思う1行ずつ読み込んでいるから。

    Redraw = false;
    for(i=1;i -1){
    document.selection.SetActivePoint( eePosLogical, 1,i,false );
    document.selection.SelectLine();
    document.selection.Delete();
    i–;
    }
    }
    Redraw = true;

    追記1:
    LineDown()は最終行を検出できないのでループで使うべきではないと判明。
    追記2:
    ダイアログを使った正規表現置換は画面の再描画があるので遅かった。

    追記3:個人的にはDocumentオブジェクトでgrep処理 + rubyっぽいiterator処理が出来れば理想的です。

    //EmEditorで開いてるファイルにGrep処理がしたい
    document.grep( “abc” ).each(function(index,value){#行削除処理#});

    コレは実装するのは大変ですが。個人的に作りかけだったりします。そのうち公開します。

    #5104
    fuku29
    メンバー

    takuyaさま

    どうもありがとうございます~~!!

    document.selection.Find(“.jpg”,eeFindNext | eeFindReplaceRegExp);
    document.selection.SelectLine();
    document.selection.Delete(1);

    なんていうマクロを、1か月分のログファイルに終わるまで処理させてみたら、10万回、数時間繰り返しても終わりませんでした・・・(- -u)
    サイトのログファイルってこんなに重いのか・・・。こんなんでこれから、このファイルを活用するべきなのかどうか?と悩んでいるところでした。
    ですが、とりあえずExcelはつまらないので(気づかなかったくせに・・・)1)の方法を試してみたら、一瞬にして終わったようです~~(嬉泣) 3)はまだこちら6.0だったので試せないのですが、もうこれで満足・・・

    ただ、追記3にあったように、Grep処理って複数ファイルをまとめて処理するってことでしょうか?これができたら本当に最高ですね!

    自分ではこの機能自体よくわかりませんが、公開していただいたらぜひ利用したいです。どうぞよろしくお願いいたします。
    :-D

1 件の投稿を表示中 (合計 3 個)
  • このトピックに返信するにはログインしてください。