条件にHitした行を高速削除
- ページ: Request
- 投稿者: anonymous
- 優先順位: 低
- 状態: 提案
- カテゴリー: 検索
- 投稿日: 2014-09-21 (日) 21:12:54
- バージョン:
メッセージ
置換ダイアログのオプションに「該当行を削除」を追加して、Hitした行を高速に削除できてほしい。
現時点、条件該当行の削除処理には正規表現を使う必要がある。また行のきわめて多いファイルでは、行の削除処理に指数関数的に時間がかかる。
高速に処理したければ、sedなどの外部ツールで処理したり、サクラでgrep抽出したりがあるが、前者は正規表現書式が異なり、後者は論理が逆になるためいまいち。
行の削除に特化して、先に該当行を検索し、必要行のみ抽出構成し、不要行を一括して処理すれば早くなりそうだが、如何か?
- 追記: マクロ用関数では、検索条件を通常のStringの他、Arrayで与えられると便利だがどうか。 -- Requester?
- 1.検索ダイアログで[該当行マーク]をする。2.全選択。3.ブックマークの設定・解除で反転する4.ブックマーク一覧を表示してコピー(ただし前後のスペースが消える) --
- もし2.1.1.0以上を試してないなら一度使ってみてください。「^.*ab.*\n」とかでの行削除も速くなっています --
- 2.1.1.3使用中です。確かにそれくらいの頃にある程度高速化した気はしますが…現時点で最適化済みと言うことでしょうか。(マーク使用技は対象が大きすぎると選択だけで遅いです) -- Requestor?
- もしステータスバーをByte表示にしていない場合で全選択が遅い場合はメモリ不足かも。(何MBのファイルを何GBのメモリで?)行削除を実装しても遅いままだと思います。Grepでマッチしない行の検索を追加したほうがパフォーマンスは良さそう --
- ^.*moziretu.*\r\nのような.*が2つ以上ある正規表現はマッチしない時に遅いようなので、行削除機能追加で改善する可能性もあるにはあります --
- あとRedo/Undoを無効にすることでメモリ使用量=>パフォーマンスの改善が可能かも --
- upld:113/sakura2-1-1-3r3817_linedelete_v1.zip行削除実装テスト(置換ダイアログ→置換対象:行削除)。ヒットした文字列を含む行を削除する機能を追加 -- もか?
- 早速ありがとうございます。効果のほどは明日にでも報告します。対象は100〜200MB程の時刻付きログデータで、メモリ4GB(実質3GB)のWin7 32bit環境で処理しています。抽出キーワードは確かに.*で挟まれています。 -- Requestor?
- 行削除モードでは通常なら「^.*ab.*\n」→「ab」のように指定してください --
- upld:115/sakura2-1-1-3_r3817_grep_nohit_v0_1.zipGrep否定行テスト -- もか?