转置非分隔文件unix

时间:2014-05-14 13:34:11

标签: unix transpose

我试图转置一个只包含大数字矩阵的文本文件,根本没有分隔符。我希望有一个相对简单的解决方案,因为我无法解决这个问题,并且对使用大型文件进行编程是个新手。

输入文件:

    01120154031
    22014141423
    21312221323

期望输出

    022
    121
    103
    211
    042
    112
    542
    411
    043
    322
    133

非常感谢任何帮助

2 个答案:

答案 0 :(得分:0)

的Perl

#!/usr/bin/env perl
use strict;
use warnings;

my @lines = <>;

my $len = length($lines[0]);
for (my $i = 0; $i < $len; $i++)
{
    for (my $j = 0; $j < scalar(@lines); $j++)
    {
        print substr($lines[$j], $i, 1);
    }
    print "\n";
}

这只是假设线条长度相同;如果他们不是,GIGO。

答案 1 :(得分:0)

以下是使用awk的解决方案:

awk -v FS="" '
{
    for(i=1; i<=NF; i++) {
        num[i] = (num[i] ? num[i] $i : $i==0 ? "0" : $i)
    }
}
END {
    for(i=1; i<=NF; i++) print num[i]
}' file
022
121
103
211
042
112
542
411
043
322
133