grep -v をGUIに載せた — 多段階検索に「含まない」を追加、1万件のノイズ退治が数クリックになった

技術解説

【2026-09-08 追記】この機能は UwView Pro v1.5.0 で正式リリースされました。 記事初出時は開発中の機能でした。スクリーンショットは初出時のビルドのため、細部が異なる場合があります。

障害調査の現実は、「探す」より「捨てる」です。

ERRORで検索して数万件ヒットしたとき、その9割は既知のノイズ——ヘルスチェック、既知の警告、定期バッチの出力です。CLIの世界では、これをこう書きます。

grep ERROR big.log | grep -v healthcheck | grep -v "known-issue-123" | grep 本命

この grep -v の考え方を、UwView Pro の多段階検索(Drill-down)に載せました。各段の検索条件に「含まない」チェックが加わり、「含む」と「含まない」を自由に積み重ねられます。

実データでやってみる — 10,967件から16件へ

OpenStreetMap日本の巨大XML(実データ・5億行超の行番号が画面に見えています)で、実際に絞り込んだ画面です。

UwView Proの多段階検索で「含まない」を使っている画面。Tokyo 10,967件から、含まない:医療で10,949件、含まない:消防で10,928件に絞ったところ。各段が上部にタブとして残っている

  1. Tokyo を検索 — 10,967件
  2. 「含まない」にチェックして 医療10,949件(医療関係の18件が消える)
  3. さらに「含まない」で 消防10,928件

CLIで動作が近いのは grep -C 1 Tokyo | grep -v 医療 | grep -v 消防 です(「含む」段は前後±1行つきなので -C 1 を付けています。ただし完全に同じ動作ではありません——後述)。ここから最後に、普通の「含む」段で 横浜 を足すと——

4段目に「横浜」を含む条件を追加し、16件まで絞り込んだ画面。ヒット語が黄色くハイライトされ、前後±1行の文脈つきで一覧表示されている

  1. 横浜 を含む — 16件

「Tokyoを含み、医療でも消防でもなく、横浜に関係する行」が、1万件の中から16件。grep -C 1 Tokyo | grep -v 医療 | grep -v 消防 | grep -C 1 横浜近い4段の絞り込みが、GUIで組めた形です。

CLIパイプとの対応(近い動作の例)

CLI UwView Pro
grep -C 1 Tokyo big.xml 1段目に Tokyo(前後±1行つき)
\| grep -v 医療 2段目 医療 +「含まない」チェック
\| grep -v 消防 3段目 消防 +「含まない」チェック
\| grep -C 1 横浜 4段目 横浜(通常の「含む」・前後±1行つき)
grep -C 1(前後1行) 前後±N行の表示(段ごと設定可)
> hits.txt 「保存…」ボタン(下記オプション付き)

※ この対応は厳密な等価ではなく「近い動作」の例示です。多段階検索は前後±N行の文脈ブロックを単位に絞り込みますが、grepのパイプは行単位のストリーム処理のため、文脈行の扱いなど境界条件で結果が異なることがあります。また、grepでは -v-C の併用が意味を持たないため、「含まない」段に -C は付けていません。

パイプにはできないこと — 段が「残る」

CLIのパイプは一方通行です。grep -v で捨てた結果は流れて消え、「あれ、消しすぎたか?」と思ったら最初から打ち直しになります。

UwView Pro では、各段が画面上部にタブとして残ります(スクリーンショット上部の Tokyo (10,967) → 含まない: 医療 (10,949) → … がそれです)。任意の段をクリックすれば、その時点の結果に戻れます。何をどの順で捨てたかが件数付きで見えるので、絞り込みの経路がそのまま調査の記録になります。段数は最大8段、途中の「含む」「含まない」は自由に混ぜられます。

そして残るのはタブだけではありません。結果一覧の行を右クリックすると、「履歴(絞り込みの経路)」が開きます。

多段階検索の結果一覧を右クリックして「履歴(絞り込みの経路)」を開いた画面。上部のタブに Tokyo (10,967) → Ariake (7) → 有明 (4) と件数が並び、サブメニューには「行 320,574,475: Tokyo」「行 320,574,475: Ariake」と、その行に至るまでに通った各段の語と原本の行番号が表示されている

いま画面に出ているこの1行が、どの語で・原本の何行目で拾われたのかが段の順に並び、そこから本文へジャンプもできます(画像は別の絞り込み例=Tokyo (10,967) → Ariake (7) → 有明 (4) のものです)。

grep -v のパイプでは、ここが落ちます。2段目以降に grep -n を足しても数えられるのは流れてきたブロックの中での番号であって、原本の 320,574,475 行目ではありません。除外を1つ足すたびに、行番号の手がかりを失ったまま数GBを読み直すことになります。「何を捨てたか」と「その行がどこの何だったか」が両方残るのが、タブと履歴のある絞り込みです。

抽出保存も強化 — 行番号・ヘッダー・±N行文脈

スクリーンショットに写っているとおり、絞り込んだ結果の「別ファイルへ保存」にオプションが加わりました。

  • 行番号を含める — 原本のどこから来た行かを保ったまま渡せます
  • 1行目をヘッダーに — CSV/TSVのヘッダー行を出力の先頭に付けます。抽出した行だけのCSVが、そのまま次のツールで読めます
  • 前後±N行も保存 — ヒット行だけでなく文脈ごと書き出します

「巨大CSVから欲しい行だけ、ヘッダー付きで抜く」が、検索→保存の2操作になりました。

正直に書いておくこと

  • この「含まない」と保存オプションは v1.5.0 で正式リリース済みです。 スクリーンショットは初出時(リリース前ビルド)の画面のため、細部が異なる場合があります
  • CLI関連の機能は、これからも続けて追加していく予定です
  • スクリーンショットは開発者自身の実行画面です(macOS・OSM日本XML実データ)。件数はこのファイル・この検索語での値で、環境やデータにより変わります
  • スクリプト化・自動化・定期実行はCLIの領分です。 grepのパイプラインをcronに乗せる用途を置き換えるものではありません。1回きりの単純検索も、実測どおりgrepで十分です
  • CLI対応表は「近い動作」の例示で、厳密な等価ではありません(文脈行の扱いが異なります)
  • この機能が効くのは「対話的に、試行錯誤しながら絞り込む」調査です——捨てる条件が最初から全部わかっている調査は、実はあまりありません

使っている道具

UwView Pro は発売中です(Windows・macOS・Linux、1ライセンスで全OS。買い切り/月額。14日間の無料試用あり——編集機能も使えます)。「含まない」を含む多段階検索はProの機能です。

リンク

タイトルとURLをコピーしました