这里我试图将文件从# start data
分割为# end data
,如果字符串'Pen'或'Laptop'存在,则代码应该继续写入文件,如果不是,则应该写入文件进入输出文件。perl中的文本文件操作
Input
# start data a1
Data1 Book 1234
Data1 Pen 54635
Data1 Laptop 4567
Data1 Lens 6473
# end data a1
# start data a2
Data2 Book 1234
Data2 Box 54635
Data2 Card 4567
Data2 Lens 6473
# end data a2
Expected ouput
# start data a2
Data2 Book 1234
Data2 Box 54635
Data2 Card 4567
Data2 Lens 6473
# end data a2
守则snipppet使用:
#!/usr/local/perl
use warnings;
use strict;
open(filein, "<Input.txt");
open(fileout, ">ouput.txt");
my @array;
my $strt =qr/^#\sstart\sdata/;
my $end=qr/^#\send\sdata/;
while(<filein>)
{
@array= split(/$strt/../$end/,$_);
foreach my $i(@array)
{
if($i =~ /Pen|Laptop/)
{
next;
}
else
{
print fileout "$_";
}
}
}
close(filein);
close(fileout);
Obtained Output from the above snippet
# start data a1
Data1 Book 1234
Data1 Book 1234
Data1 Pen 54635
Data1 Laptop 4567
Data1 Lens 6473
# end data a1
# start data a2
Data1 Book 1234
Data1 Book 1234
Data1 Box 54635
Data1 Box 54635
Data1 Card 4567
Data1 Card 4567
Data1 Lens 6473
# end data a2
嗨,你已经证明你的预期产出,而不是你的输出电流,或你认为问题是。你可以[编辑]你的问题,以清楚你需要什么? – IMSoP
嗨,我已经更新了我从我的代码得到的输出。我认为这主要是我用过的正则表达式的问题。请建议 – user8450886