perl提取特定文本行的下一行如何实现?

我有一个文本文件,我想提取指定的信息,这些信息的规律是前一行都是相同的,如何做到?比如:xxxxxxx[固定文本][需要的内容1]xxxxxxxxxxxxxxx[固定文本... 我有一个文本文件,我想提取指定的信息,这些信息的规律是前一行都是相同的,如何做到?
比如:
xxxxxxx
[固定文本]

[需要的内容1]
xxxxxxxxx
xxxxxx
[固定文本]

[需要的内容2]
xxxxxx

我想把需要的内容提取出来写入一个新文件,应该如何实现呢?
这个很着急,我会加分的!!
展开
 我来答
火泽尨
2013-11-04 · 超过24用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:31.4万
展开全部
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下操作的,就直接使用楼上的句柄操作就可以了
TableDI
2024-07-18 广告
当我们谈到Python与Excel的拆分时,通常指的是使用Python的库来读取Excel文件中的数据,然后根据某种逻辑(如按行、按列、按特定值等)将数据拆分成多个部分或输出到新的Excel文件中。上海悉息信息科技有限公司在处理这类任务时,... 点击进入详情页
本回答由TableDI提供
76de1
2013-11-03 · TA获得超过1158个赞
知道小有建树答主
回答量:666
采纳率:100%
帮助的人:489万
展开全部
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 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
采纳数:25897 获赞数:1464972
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。

向TA提问 私信TA
展开全部
perl提取特定文本行的下一行,参考代码如下:
while(<FILE>){
if(m/^step2$/){
chomp($data = <FILE>);
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式