提取介于某个区间的几行文字
flw原话:
这是面向行处理的一种轻量级解决方法。
比那些对整个文件进行模式匹配的方法不知优雅了要多少倍。
$start 表示开始标记的模式,$end 表示结束标记的模式,
if ( (/$start/ .. /$end/) and !/$end/ ){
表示需要开始和结束之间的,但不需要结束的那一行。
#!/usr/bin/perl
use warnings;
use strict;
open (INFILE,"/home/liuguiyou/qujian.txt") or die "Cannot open the inputfile: $!/n";
open (OUTFILE,">/home/liuguiyou/result.txt")or die "Cannot open the outputfile: $!/n";
while(<INFILE>){
if(/>chromosome01/../>chromosome02/ and !/>chromosome02/ ){
print OUTFILE "$_";
}
}
exit;
[liuguiyou@localhost ~]$ more qujian.txt
>chromosome01 Indica cv. 93-11
CTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAA
CCCTAAACCCTAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACAGCT
GACAGTACGATAGATCCACGCGAGAGGAACCGGAGAGACAACGGGATCCAGGCGCCAGCG
>chromosome02 Indica cv. 93-11
CTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAA
CCCTAAACCCTAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACAGCT
GACAGTACGATAGATCCACGCGAGAGGAACCGGAGAGACAACGGGATCCAGGCGCCAGCG
>chromosome03 Indica cv. 93-11
运行完以后:
>chromosome01 Indica cv. 93-11
CTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAA
CCCTAAACCCTAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACAGCT
GACAGTACGATAGATCCACGCGAGAGGAACCGGAGAGACAACGGGATCCAGGCGCCAGCG