in reply to Vertical Regex
Here is a slightly different approach to zwon's where I only read the file in one place and use state variables to keep track of where we are in the data file.
use strict; use warnings; my $frgFile = q{spw768164.frg}; open my $frgFH, q{<}, $frgFile or die qq{open: < $frgFile: $!\n}; my $inFRG = 0; my $inSeq = 0; while( <$frgFH> ) { if( $inFRG ) { if( m|^\}| ) { $inFRG = 0; } elsif( $inSeq ) { if( m{^\.} ) { $inSeq = 0; } else { print; } } elsif( m{^acc:(\d+)} ) { print qq{>$1\n}; } elsif( m{^seq:} ) { $inSeq = 1; } else { ; } } else { next unless m|^\{FRG|; $inFRG = 1; } } close $frgFH or die qq{close: < $frgFile: $!\n};
The output.
>1101077781160 acaaggctggagtatttttttgtttagtaatttatttaattcagtttttatattttcataaactttttta ggatcaccagggccattacttaaaaaaaaaccatcaaaatttctattaattatatcctcagcattaaaat tgatctttagagagaaacttacctttgaaaatatattttttgttataaattaaatatccgttttgataat taagtttagttttattatctaatacgggcatattaaatcatgtgtattagtatattatatcaaaggaaat tcaaatgagtttggcaaaaaaatttctgatgacgttaaagtgctttaaaaggcggagatagaaaaacttt catagcaaggtatgtctattctgagttaaaaattttctattaaagaaatctagagagagacgtgcttaat tatctgacga >1101077781161 gcgtgacgtttgagcagaagaattatttattaatttctgaggattttaagtctttaaaacaaaacgtttc attcaaatttcaaaatcttgattataaagaagcgatggcactaatggctgagattggcaatattaatata caactggctcagcagtattaaaaattgaactagatgcgttggaatctcaagggttaggaagaacagtttc taatccaaattgtttaccctagacaatcaaactgccagtattaaac
I hope this is of interest.
Cheers,
JohnGG
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Vertical Regex
by joomanji (Acolyte) on Jun 04, 2009 at 16:32 UTC |