perl提取特定文本行的下一行如何实现?
我有一个文本文件,我想提取指定的信息,这些信息的规律是前一行都是相同的,如何做到?比如:xxxxxxx[固定文本][需要的内容1]xxxxxxxxxxxxxxx[固定文本...
我有一个文本文件,我想提取指定的信息,这些信息的规律是前一行都是相同的,如何做到?
比如:
xxxxxxx
[固定文本]
[需要的内容1]
xxxxxxxxx
xxxxxx
[固定文本]
[需要的内容2]
xxxxxx
我想把需要的内容提取出来写入一个新文件,应该如何实现呢?
这个很着急,我会加分的!! 展开
比如:
xxxxxxx
[固定文本]
[需要的内容1]
xxxxxxxxx
xxxxxx
[固定文本]
[需要的内容2]
xxxxxx
我想把需要的内容提取出来写入一个新文件,应该如何实现呢?
这个很着急,我会加分的!! 展开
3个回答
展开全部
use strict;
use warnings;
@ARGV==2 or die; #将读入文件与写出文件参数传递给@ARGV
my($infile,$outfile)=@ARGV; #通过@ARGV传递给变量,以便于下面执行句柄操作
open my $in,'<',$infile or die;
open my $out,'>',$outfile or die;
while(<$in>)
{
next if(/^xxxxxxx$/)#跳过匹配到的特定内容
print $out "$_"; #输出即可
}
close $in;
close $out; #关闭句柄
注意:我用@ARGV是Linux下操作的,如果你是window下操作的,就直接使用楼上的句柄操作就可以了
展开全部
open F, "F:/1.txt"; #1.txt是你画面上那个文件
open OUT, ">F:/out.txt"; #o.txt是你要保存的文件
@array=<F>;
$count=-1;
foreach (@array){
$count++;
if(/固定文本/){$start=$count+1;}#确认固定文本的行数号,并记录它下一行的行数号,并把这行作为输出的第一行。这里$start你可以通过+1,+2,+3等等来调节。
if(/xxxxxx/){$end=$count-1; #记录结束行数号
for ($start..$end) { #两个行数相减就是要的东西
print OUT $array[$_];}}}
追问
我想要的是每一个需要的行,并不是两个需要的内容之间的东西,需要的内容都是单行的,但是中间隔着别的,每个需要的行前面会有一行特定内容的。
我想我应该是识别到固定文本就把下一行输出到新文件里面吧?我应该怎么做呢?
追答
#那更简单了:
open F, "F:/3.txt"; #1.txt是你画面上那个文件
@array=<F>;
$count=-1;
foreach (@array){
$count++;
if(/固定文本/){$start=$count+1; print "$array[$start]\n";}}#这样就只输出固定文本下面一行,自己可以调节$count+1,+2,+3....来调节固定文本下的任意一行
open F, "F:/3.txt"; #1.txt是你画面上那个文件
open OUT,">F:/out.txt";#把结果写入F:盘下的out.txt文件中
@array=<F>;
$count=-1;
foreach (@array){
$count++;
if(/固定文本/){$start=$count+1; print OUT"$array[$start]\n";}}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-08-08 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:25897
获赞数:1464977
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。
向TA提问 私信TA
关注
展开全部
perl提取特定文本行的下一行,参考代码如下:
while(<FILE>){
if(m/^step2$/){
chomp($data = <FILE>);
}
}
while(<FILE>){
if(m/^step2$/){
chomp($data = <FILE>);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询