CSVから指定文字を含む行を抽出・除外するツール

CSV・表データツール
検索対象

「指定した列」を選んだ場合に、1始まりの列番号を入力します。

処理方法

CSVとキーワードを入力し、検索条件を選んでください。

このツールでできること

CSVから、1つのキーワードを含むレコードだけを抽出したり、一致するレコードを除外したりできます。すべての列をセル単位で検索するほか、1始まりの列番号を1つ指定して特定の列だけを検索できます。

検索は部分一致です。先頭レコードをヘッダーとして保持するか、大文字・小文字を区別せずに比較するかも選べます。元のセル値を書き換えず、絞り込んだレコードをCSVとして再生成します。

使い方

  1. CSVを入力欄へ貼り付けます。
  2. 探したいキーワードを入力します。
  3. すべての列を検索するか、1始まりの列番号を指定します。
  4. 抽出または除外を選び、必要に応じてヘッダーと大文字・小文字の設定を変更します。
  5. 「CSVを処理」を押し、結果をコピーします。

処理後にCSV、キーワード、またはいずれかの設定を変更すると、古い結果と件数表示は消去されます。変更した条件で「CSVを処理」をもう一度押してください。

入力例・出力例

次のCSVを入力します。

商品名,状態,地域
青森りんご,販売中,青森
みかん,在庫切れ,愛媛
りんごジュース,在庫切れ,東京

初期設定の「すべての列」「抽出」「先頭レコードをヘッダーとして扱う」のまま、キーワードに在庫切れを入力すると、結果は次のとおりです。

商品名,状態,地域
みかん,在庫切れ,愛媛
りんごジュース,在庫切れ,東京

同じCSVで検索対象を1列目、キーワードを在庫切れにすると、該当するデータレコードは0件です。キーワードが2列目にあっても、指定していない列は検索しません。この場合もヘッダー設定が有効なら、結果欄にはヘッダーだけを表示します。

よくある利用場面

  • 商品CSVから指定状態・カテゴリーを含むレコードを抽出するとき
  • 顧客一覧から特定ドメインや地域を含む行を除外するとき
  • 全列検索と指定列検索を使い分けてCSVを絞り込むとき

処理仕様

キーワードの比較とヘッダー

  • 検索は1つのキーワードによる部分一致です。空のキーワードはエラーですが、半角スペースなど空白だけのキーワードは、その空白を含むセルの検索に使用します。入力値とキーワードの前後空白を削除しません。
  • 「大文字・小文字を区別しない」が無効なら、文字の大小を含めてそのまま比較します。有効なら比較に使う文字列だけをJavaScriptのtoLowerCase()で小文字化し、出力するセル値は変更しません。
  • Unicode正規化は行いません。見た目が似ていても、全角・半角や、合成済み文字と結合文字の違いがある文字列は別の値として比較します。
  • 全列検索は各セルを個別に判定します。例えば隣り合うセルが青森,りんごでも、セルの境界をまたぐ森りには一致しません。
  • 指定列検索では、半角数字による1以上の整数を1つ入力します。CSV全体の最大列数を超える番号はエラーです。可変列のレコードにその列が存在しない場合、そのレコードは不一致です。
  • ヘッダーは内容から自動判定しません。設定が有効なら先頭レコードを無条件で検索対象から外し、抽出・除外のどちらでも結果の先頭へ保持します。設定を外すと先頭レコードも通常の検索対象です。

CSVの解析と出力

半角カンマ区切りのCSVを解析します。レコード区切りのLF・CRLF・CR、空フィールド、空レコード、引用符内のカンマと改行、""で表した引用符、入力先頭のBOMに対応します。引用符はフィールドの先頭で開始し、閉じ引用符の後にはカンマ、改行、または入力終端だけを置けます。構文エラーでは部分的な結果を出しません。引用符内の改行はセル値の一部であり、別レコードとして検索しません。

結果は解析後のセル値からCSVとして再生成します。カンマ、引用符、CR、LFを含むフィールドだけを引用し、内部の引用符は二重化します。レコード区切りはLF、末尾は改行なしです。先頭BOM、不要だった引用符、元のレコード区切りは保持しませんが、引用符内に含まれていた改行と各セルの値は保持します。前後空白、HTML風文字列、HTMLエンティティ、文字として入力した\n、バックスラッシュを変換・復号しません。

入力エラーと0件の結果

空入力、BOMだけの入力、空キーワード、不正なCSV、不正な列番号、CSV全体の最大列数を超える列番号はエラーです。列番号に符号、小数点、全角数字、前後の空白は使用できません。

件数表示の「入力」「一致」「結果」は、ヘッダー設定が有効な場合は先頭レコードを除いて数えます。「最大○列」はCSV全体で最もフィールド数が多いレコードを基準にします。

一致するデータレコードが0件でも、ヘッダー設定が有効ならヘッダーを出力するためコピーできます。ヘッダー設定が無効で結果レコードが0件なら、結果欄は空になりコピーできません。一方、空フィールド1個からなる有効なレコードは表示上が空文字でも、レコードが存在するためコピーできます。

キーワードは通常の文字列として扱い、正規表現として解釈しません。

入力データについて

入力したCSVと検索条件は、外部ライブラリを使わずブラウザ内だけで処理します。ToolRollのサーバーや外部サービスへの通信は行わず、Cookie、Web Storage、IndexedDBにも保存しません。

「結果をコピー」を押したときだけ、ブラウザのClipboard APIへ結果を渡します。Clipboard APIを利用できない場合は、結果欄から手動でコピーしてください。