Request/487 のバックアップ(No.8)




条件にHitした行を高速削除

  • ページ: Request
  • 投稿者: anonymous
  • 優先順位: 低
  • 状態: 提案
  • カテゴリー: 検索
  • 投稿日: 2014-09-21 (日) 21:12:54
  • バージョン:

メッセージ

置換ダイアログのオプションに「該当行を削除」を追加して、Hitした行を高速に削除できてほしい。

現時点、条件該当行の削除処理には正規表現を使う必要がある。また行のきわめて多いファイルでは、行の削除処理に指数関数的に時間がかかる。 高速に処理したければ、sedなどの外部ツールで処理したり、サクラでgrep抽出したりがあるが、前者は正規表現書式が異なり、後者は論理が逆になるためいまいち。

行の削除に特化して、先に該当行を検索し、必要行のみ抽出構成し、不要行を一括して処理すれば早くなりそうだが、如何か?


  • 追記: マクロ用関数では、検索条件を通常のStringの他、Arrayで与えられると便利だがどうか。 -- Requester? 2014-09-21 (日) 21:31:08
  • 1.検索ダイアログで[該当行マーク]をする。2.全選択。3.ブックマークの設定・解除で反転する4.ブックマーク一覧を表示してコピー(ただし前後のスペースが消える) -- 2014-09-22 (月) 00:35:23
  • もし2.1.1.0以上を試してないなら一度使ってみてください。「^.*ab.*\n」とかでの行削除も速くなっています -- 2014-09-22 (月) 00:45:25
  • 2.1.1.3使用中です。確かにそれくらいの頃にある程度高速化した気はしますが…現時点で最適化済みと言うことでしょうか。(マーク使用技は対象が大きすぎると選択だけで遅いです) -- Requestor? 2014-09-22 (月) 22:56:37
  • もしステータスバーをByte表示にしていない場合で全選択が遅い場合はメモリ不足かも。(何MBのファイルを何GBのメモリで?)行削除を実装しても遅いままだと思います。Grepでマッチしない行の検索を追加したほうがパフォーマンスは良さそう -- 2014-09-23 (火) 02:04:38
  • ^.*moziretu.*\r\nのような.*が2つ以上ある正規表現はマッチしない時に遅いようなので、行削除機能追加で改善する可能性もあるにはあります -- 2014-09-23 (火) 02:25:21
  • あとRedo/Undoを無効にすることでメモリ使用量=>パフォーマンスの改善が可能かも -- 2014-09-23 (火) 02:30:34
  • upld:113/sakura2-1-1-3r3817_linedelete_v1.zip行削除実装テスト(置換ダイアログ→置換対象:行削除)。ヒットした文字列を含む行を削除する機能を追加 -- もか? 2014-09-23 (火) 04:17:05
  • 早速ありがとうございます。効果のほどは明日にでも報告します。対象は100〜200MB程の時刻付きログデータで、メモリ4GB(実質3GB)のWin7 32bit環境で処理しています。抽出キーワードは確かに.*で挟まれています。 -- Requestor? 2014-09-23 (火) 22:40:48
  • 行削除モードでは通常なら「^.*ab.*\n」→「ab」のように指定してください -- 2014-09-23 (火) 23:37:05
  • upld:115/sakura2-1-1-3_r3817_grep_nohit_v0_1.zipGrep否定行テスト -- もか? 2014-09-24 (水) 00:35:44

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White
[添付ファイル一覧] [全ページの添付ファイル一覧]
アップロード可能最大ファイルサイズは 2,048KB です。

    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS