- 论坛徽章:
- 26
|
貌似也可以。- #!/usr/bin/perl -w
- use 5.016;
- my %tmp = (
- c256 => '',
- count => 0,
- range => [ 0, 0 ],
- data => [ 0, 1, 4, 5 ]
- );
- while (<DATA>) {
- my @col = split;
- my $num = $col[2];
- my $c256 = "@col[1, 4, 5]";
- if ( $c256 eq $tmp{c256} && $num - $tmp{range}[1] == 1 ) {
- $tmp{range}[1] = $num;
- $tmp{count}++;
- }
- else {
- PRINT() if $tmp{count} >= 3;
- %tmp = (
- c256 => $c256,
- count => 1,
- range => [ $num, $num ],
- data => [ @col[ 0, 1, 4, 5 ] ]
- );
- }
- }
- PRINT() if $tmp{count} >= 3;
- sub PRINT {
- say join "\t", @{ $tmp{data} }[ 0, 1 ], join( '-', @{ $tmp{range} } ),
- @{ $tmp{data} }[ 2, 3 ];
- }
- __DATA__
- 16642 chr1 2336225 18 HOM del
- 16642 chr1 2336226 17 HOM del
- 16642 chr1 2336227 17 HOM del
- 16642 chr1 2336228 18 HOM del
- 16642 chr1 2336236 17 HOM del
- 16642 chr1 2336237 17 HOM del
- 16642 chr1 2336309 24 HOM del
- 16642 chr1 2336320 24 HOM del
- 16642 chr1 2336321 24 HOM del
- 16642 chr1 2336322 24 HET del
- 16642 chr1 2336323 24 HET del
- 16642 chr1 2336324 24 HET del
- 16642 chr1 2336325 24 HOM del
复制代码 |
|