- 论坛徽章:
- 7
|
biru:- #!/usr/bin/perl
- my ( undef, @ABC ) = split /\s+/, <DATA>;
- my ( @abc, @data );
- while (<DATA>) {
- my ( $abc, @num, $i ) = split;
- push @abc, $abc;
- push @{ $data[ $i++ ] }, $_ for @num;
- }
- for my $e (@data) {
- my ( $ABC, $i ) = shift @ABC;
- print map join( "\t", $ABC, $abc[ $i++ ], $_ ) . $/, @$e;
- }
- __DATA__
- n A B C D E F G
- a 1 2 3 4 5 6 7
- b 2 3 4 5 6 7 8
- c 2 3 5 6 1 5 1
复制代码 and biru:- #!/usr/bin/perl
- use 5.018;
- my ( @ABC, @abc, @data, $i );
- while (<DATA>) {
- my ( $ABC, $abc, $n ) = split;
- if ( !@ABC or $ABC ne $ABC[-1] ) {
- push @ABC, $ABC;
- $i = 0;
- }
- push @{ $data[ $i++ ] }, $n;
- push @abc, $abc if @abc < @data;
- }
- say join "\t", 'n', @ABC; # <== here 'n'
- say join "\t", shift @abc, @$_ for @data;
- __DATA__
- A a 1
- A b 2
- A c 2
- B a 2
- B b 3
- B c 3
- C a 3
- C b 4
- C c 5
- D a 4
- D b 5
- D c 6
- E a 5
- E b 6
- E c 1
- F a 6
- F b 7
- F c 5
- G a 7
- G b 8
- G c 1
复制代码 |
|