行到列
Rows to Columns
我的文本文件如下:
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 .
. . .
. . .
. .
等等....
这里是 words/topics 和它们各自的 weights/values。
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
我的文本文件如下:
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 .
. . .
. . .
. .
等等....
这里是 words/topics 和它们各自的 weights/values。
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