我的文本文件如下:
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/