- 论坛徽章:
- 0
|
本帖最后由 ba_du_co 于 2014-05-02 15:48 编辑
有行 start > end
b 32 7
start < end 的话可以参考- my ( $key, @data ) = '#!/usr/bin/perl';
- while (<DATA>) {
- my ( $head, @tail ) = split;
- &Print if @data and ( $head ne $key );
- ( $key, $data[@data] ) = ( $head, [@tail] );
- }
- &Print;
- sub Print {
- @data = sort { $a->[0] <=> $b->[0] } @data;
- my @print = shift @data;
- for my $r ( splice @data ) {
- $r->[0] < $print[-1][-1]
- ? push @{ $print[-1] },
- ( $r->[1], $print[-1][-1] )[ $r->[1] < $print[-1][-1] ]
- : @{ $print[-1] } > 2 ? ( $print[-1] = $r ) : push @print, $r;
- }
- print join( "\t", $key, @$_ ), "\n" for @print;
- }
- __DATA__
- a 1 6
- a 2 7
- a 15 19
- a 3 9
- a 2 13
- a 21 25
- b 2 8
- b 32 37
- b 5 11
- b 13 17
- b 19 22
复制代码 |
|