TXTファイルを分析したいのですが、データは一列配列で複数列配列でなければなりません。

TXTファイルを分析したいのですが、データは一列配列で複数列配列でなければなりません。

手動でデータを検査せずにデータを操作する方法(複数列配列の一部の機能を変更する必要があるように見えるように変更)はありますか?その中には数千行があります。

最初の10行のイメージです。

同じ問題を持つ別のファイルのイメージを追加しました。カーソルは列Bにあり、すべての情報は列Aにあります。私が最初に利用できるのは、再処理されたファイルをアップロードしたためです。コメントの作成者は複数の回答を提案し、各回答を見てみましょう。

ここに画像の説明を入力してください。

このファイルのCSV形式の画像を追加しました。

答え1

私は3つの解決策を見ました(最初は強力で、2番目は簡単で、3番目は高速です)。

  1. Apacheドリルビット。それはできるTSVの解析そして他の多くのフォーマット。ただし、この問題がほとんど発生しない場合は重すぎる可能性があります。

  2. PythonまたはPerl onelinerを使用して行を分割して再処理します。例:

$ ps ax | head
   PID TTY      STAT   TIME COMMAND
     1 ?        Ss     2:40 /sbin/init
     2 ?        S      0:08 [kthreadd]
     3 ?        S      0:00 [ksoftirqd/0]
     5 ?        S<     0:00 [kworker/0:0H]
     8 ?        S     13:32 [rcu_sched]
     9 ?        S      0:00 [rcu_bh]
    10 ?        S      0:07 [migration/0]
    11 ?        S<     0:00 [lru-add-drain]
    12 ?        S      0:18 [watchdog/0]
$ ps ax | head |perl -n -e 'sub mynormalize($){ $r = shift;$r->[4]=substr($r->[4], 0, 2); return $r}; my @row = split; print(join("\t", @{ normalize(\@row) }), "\n"); '
PID     TTY     STAT    TIME    CO
1       ?       Ss      2:40    /s
2       ?       S       0:08    [k
3       ?       S       0:00    [k
5       ?       S<      0:00    [k
8       ?       S       13:32   [r
9       ?       S       0:00    [r
10      ?       S       0:07    [m
11      ?       S<      0:00    [l
12      ?       S       0:18    [w
  1. vim + regexまたはsedを使用してください。 #2と同じですが、変換は簡単です。

関連情報