我的文本文件如下:

TOPIC:  0 161416.0

the 10758.0
. 6330.0
, 5043.0
<unknown> 4591.0
in 4521.0
be 4476.0
of 3759.0

TOPIC:  1 93549.0

the 6957.0
, 4170.0
of 3624.0
. 3468.0
<unknown> 2321.0
be 2121.0
a 2073.0
in 1998.0

等等。文件中有大约2000个主题。

我已经尝试过了
awk -v RS= '/----/{next}{gsub(/\n/,",")}7' Input File

但是,我得到的输出为
TOPIC:  0 161416.0

the 10758.0,. 6330.0,, 5043.0,<unknown> 4591.0,in 4521.0,be 4476.0,of     3759.0

TOPIC:  1 93549.0

the 6957.0,, 4170.0,of 3624.0,. 3468.0,<unknown> 2321.0,be 2121.0,a 2073.0,in 1998.0

但是我需要输出

我希望输出如下:
TOPIC:  0 161416   TOPIC:  1 93549.0  ........... TOPIC:  N

. 6330.0            , 4170.0                      .
.                   of 3624.0                     .
.                   .                             .
.                   .                             .
.                   .

等等...

在这里,它们是单词/主题及其各自的权重/值。

PS:每个主题基本上没有相同数量的元素。主题0可能有100个元素,主题1可能有300个元素,依此类推

最佳答案

Perl解决方案:

perl -lne 'chomp;
           if (/Topic: .*/) { push @t, [$_] }
           else { push @{ $t[-1] }, $_ }
           $max = @{ $t[-1] } if @{ $t[-1] } > $max;
           }{
           for $i (0 .. $max-1) {
               print join "\t", map $t[$_][$i], 0 .. $#t
           }' < input > output

关于linux - 行到列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28942964/

10-10 08:13