piapia123
ja

列の抽出

テキスト

処理はすべてブラウザ内で完結します。データは送信されません

入力
ファイルをここにドロップすると読み込めます
出力

各行から必要な部分を取り出すツールです。「列」には 2 通りの意味があるため、モードを 2 つに分けています。 区切り文字で分ける —— 1 行が 1 レコードで、区切り文字で切った各断片が 1 列です。CSV、ログ、`名前,電話,住所` のようなデータ向けです。 文字位置で切り出す —— 1 行を 1 本の文字列として、たとえば「5 文字目から 12 文字目」を取ります。固定長テキスト、旧システムの固定フィールド、「各行の先頭 20 文字だけ残す」といった用途向けです。 これを 1 つのモードに統合すると、「2 列目」という言葉がデータによって別のものを指し、どちらを意味しているか表現できなくなります。 負の番号は行ごとに数えます。 `-1` はその行の最後の項目です。長さが揃っていないデータ(3 列の行もあれば 5 列の行もある)では、「最後の列」はこう書くしかありません。取り出せない項目はエラーではなく空文字にします。1 行の都合でバッチ全体が使えなくなるのは厳しすぎますし、「空行を捨てる」オプションで残すか捨てるかを選べます。

機能

  • 2 モード:区切り文字で分ける/文字位置で切り出す
  • 列指定は `2`、`2-4`、`1,3,5-7` の 3 通り。カンマまたは空白で区切る
  • 負の番号は末尾から数え、しかも行ごとに長さを判定するので不揃いでも正しく取れる
  • 区切り文字は `\t` のエスケープと複数文字(`::` など)に対応
  • 取り出せない項目は空のままにして行数を合わせる。捨てる設定も可能
  • 文字位置モードは書記素クラスタ単位で数えるため、絵文字も 1 文字
  • 解釈できない列指定はエラーにし、空の結果を黙って返さない
  • 処理はすべてブラウザ内で完結し、内容は送信されません

使い方

  1. 1 行 1 レコードのデータを貼り付けます
  2. 区切り文字モードか文字位置モードを選びます
  3. 取り出す列を入力します(例:`2`、`2-4`)
  4. 「コピー」で結果を取り出します

よくある質問

`2 - 4` と書くとエラーになるのはなぜですか?
カンマと空白のどちらも列指定の区切りとして扱うため、`2 - 4` は `2`、`-`、`4` の 3 つに分解され、`-` が解釈できないからです。範囲の中に空白は入れられません。`2-4` と書いてください。エラーにするのは意図的です。黙って違う列を取った結果は見た目が完全に正常で、データを使って初めて気付くことになるからです。
空になる行があるのはなぜですか?
その行に指定した列が存在しないためです(例:2 列しかないデータで 3 列目を指定した)。これは仕様どおりで、取り出せない項目は空のまま、行数は入力と 1 対 1 に対応します。そうすることで元データと見比べられます。「取り出せなかった行を捨てる」をオンにすれば、それらの行は消えます。
負の番号はどう数えますか?
`-1` がその行の最後の項目、`-2` がその 1 つ前です。重要なのは行ごとに長さを判定する点です。5 列・3 列・4 列の 3 行があれば、`-1` はそれぞれの行の最後の項目を返します。列指定を全体で 1 回だけ解析できないのはこのためです。範囲と組み合わせることもできます(`-3--1` で最後の 3 項目)。

関連ツール