您的位置:首页 > 其它

perl 提取介于某个区间的几行文字(转)

2009-11-08 22:36 417 查看

提取介于某个区间的几行文字

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: