如何从输入文件中提取部分文本并写入另一个文件?

时间:2013-10-14 06:02:24

标签: regex perl text extract

这是我的代码。我希望提取部分文本并写入另一个文件。代码循环不会停留在我选定的文本范围内。它读到字的最后一行。请建议我。谢谢。例如,我需要提取$ NAME:sandy直到$$。TO然后加入$ NAME:patrick中的内容,这是从G1开始直到$$ SRU。

TEXT:

$ NAME : corry  
$$.Inc s d
$$.Oc s
$$.TO

G1 ty n1 EE EE M T1 T2 $$SRU
G2 n1 y OO OO M T3 T4 $$SRU    
$$.EON

$ NAME : patrick    
$$.Inc c d
$$.Oc c
$$.TO

G1 td n3 EE EE M T5 T6 $$SRU      
G2 n3 y OO OO M T7 T8 $$SRU    
$$.EON
$ NAME : sandy    
$$.Inc k l
$$.Oc l
$$.TO

G1 td n3 FF FF M R5 R6 $$SRU      
G2 n3 y OO OO N R7 R8 $$SRU    
$$.EON

代码:

use strict;
use warnings;

open my $F1, '<', 'testing.txt' or die "failed $!";
open my $F2, '>', 'out.txt' or die "failed $!";

while (<$F1>) {
if (/^\$ NAME : sandy/../\$.TO/) {
print $F2 $_;
}
if (/^\$ NAME : patrick/../\$.EON/) {
if(/^G1/../\$SRU){
 s/G1/G1.G1o.n/g;
print $F2 $_;}
}

 }
close $F1;
close $F2;

1 个答案:

答案 0 :(得分:2)

首先,你的正则表达式:之前没有空间,并且你的代码复杂化了......

use warnings;
use strict;

open my $fh, '<', 'in' || die "Can not open file:$!\n";;

while (<$fh>){
        print if /^\$ NAME : corry/../\$\$\.EON/;
}
close $fh;

如果您需要首先将一些数据写入其他文件,您需要打开它进行编写:

open my $fh2, '>>', 'my_out_file.txt'; #open file handler $fh2 associated with file named my_out_file.txt

然后你可以打印到这个文件,就像你打印到屏幕上一样:

print $fh2 'some text here'; #print to file handler $fh2 string 'some text here'