我想分析一个TXT文件,但数据是一个1列数组,并且它需要是一个多列数组

我想分析一个TXT文件,但数据是一个1列数组,并且它需要是一个多列数组

有没有一种方法可以让我操作数据(即,更改多列数组的某些功能,使其看起来应该如此),而无需手动检查数据?其中有数千行。

这是前 10 行的图像。

我添加了另一个存在相同问题的文件的图像。请注意,我的光标位于 B 列,所有信息都位于 A 列。我能够使用的第一个是因为他们为我们上传了重新处理的文件,但这个没有那么奢侈。一位评论者提出了几个答案,我将逐一研究。

在此输入图像描述

添加了这些文件的 csv 格式图片

答案1

我看到了 3 个解决方案(第一个很强大,第二个很简单,第三个很快速):

  1. 阿帕奇钻头。它可以解析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 相同,但转换更简单。

相关内容