- 论坛徽章:
- 7
|
biru:- #!/usr/bin/perl
- use 5.018;
- my @intention = qw[ A G C D A C C G A D ];
- my ( @titles, %data, %filter );
- my @name = <DATA> =~ /\S+/g;
- $filter{$_} = [ splice @intention, 0, 2 ] for @name;
- while (<DATA>) {
- my ( $title, $data ) = /^([^\d_]+)\S*\s*(.*)$/;
- my @data = split /\s+/, $data;
- push @titles, $title if !@titles || $titles[-1] ne $title;
- for my $n (@name) {
- $data{$n}{$title}{$_}++ for splice @data, 0, 2;
- }
- }
- say join "\t", '', @titles;
- for my $n (@name) {
- say join "\t", $n, map {
- my $t = $_;
- join ', ', map { $data{$n}{$t}{$_} || 0 } @{ $filter{$n} };
- } @titles;
- }
- __DATA__
- name1 name2 name3 name4 name5
- MG1 A G C D C A C G A D
- MG2 A G D C A C G C D A
- SH_1 G G C C C C 0 0 A A
- SH_2 A A 0 0 A A C C D D
- SH_3 G A D D 0 0 G G 0 0
- SD1 A G C D C C C G A D
- SD2 0 0 D C C A C C D A
复制代码- MG SH SD
- name1 2, 2 3, 3 1, 1
- name2 2, 2 2, 2 2, 2
- name3 2, 2 2, 2 1, 3
- name4 2, 2 2, 2 3, 1
- name5 2, 2 2, 2 2, 2
复制代码 |
|