PERL,一次从更多列中选择数据?

时间:2014-04-18 16:59:20

标签: perl

你可以帮帮我吗?我创建了txt文件。共有4列。

1   -7  8,2 8,1
1   -5  8,4 8
1   -3  8,5 8,2
2   -6  8,4 8,2
3   -5  8,4 8,2
3   -4  8,4 8,3
5   -1  8,5 8,3
5   1   8,4 8,6

我需要: 1 0 0 0 0 -7 8,2 8,1 当在第一列中例如是1时,out是1 0 0 0 0。如果2 out是0 1 0 0 0。如果3:0 0 1 0 0。如果4:0 0 0 1 0。如果5:0 0 0 0 1并继续下一列的数据。 感谢。

1 个答案:

答案 0 :(得分:1)

use strict;
use warnings;

while (<DATA>) {
    my @fields = split;
    my $i = shift @fields;
    my @bools = (0) x 5;
    $bools[$i-1] = 1;
    unshift @fields, @bools;

    print join(' ', @fields), "\n";
}

__DATA__
1   -7  8,2 8,1
1   -5  8,4 8
1   -3  8,5 8,2
2   -6  8,4 8,2
3   -5  8,4 8,2
3   -4  8,4 8,3
5   -1  8,5 8,3
5   1   8,4 8,6

输出:

1 0 0 0 0 -7 8,2 8,1
1 0 0 0 0 -5 8,4 8
1 0 0 0 0 -3 8,5 8,2
0 1 0 0 0 -6 8,4 8,2
0 0 1 0 0 -5 8,4 8,2
0 0 1 0 0 -4 8,4 8,3
0 0 0 0 1 -1 8,5 8,3
0 0 0 0 1 1 8,4 8,6