在动态线匹配后搜索[关闭]

问题描述 投票:-3回答:1

亲爱,

我有以下格式的文件

Success|Filter passed|[invalid field]|[invalid field]|Id-350a875b087965e58cbe1f4a
Accept: text/plain, text/plain, application/json, application/*+json, */*, */*
Host: api2.tim.com.br
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
Via: 1.1 
X-Forwarded-For: 144.22.98.123
X-Forwarded-Host:
X-Forwarded-Server:

Success|Success in calling policy shortcut|[invalid field]|[invalid field]|[invalid field]|Id-350a875b087965e58cbe1f4a|Call 'Set Request Message'|GET
Accept: text/plain, text/plain, application/json, application/*+json, */*, */*
Host: api2.tim.com.br
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
Via: 1.1 api2.tim.com.br
X-Forwarded-For: 144.22.98.123
X-Forwarded-Host: 
X-Forwarded-Server: 
Content-Type: text/xml; charset="UTF-8"

我需要搜索以字符串“^ Success”开头的行,并显示所有项目,直到再次出现“^ Sucess”字符串。以下是我需要显示的示例:

Success|Filter passed|[invalid field]|[invalid field]|Id-350a875b087965e58cbe1f4a
Accept: text/plain, text/plain, application/json, application/*+json, */*, */*
Host: api2.tim.com.br
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
Via: 1.1 
X-Forwarded-For: 144.22.98.123
X-Forwarded-Host:
X-Forwarded-Server:

会发生什么是匹配后下面的线数是非常动态的。

会发生的是,匹配项下方的行数非常动态,并且在同一文件中可能存在多条相同匹配的行,我还需要在运行文件时显示它们。

你们能帮助我吗?

perl
1个回答
2
投票

Perl有一个“段落模式”。您更改输入记录分隔符$/以读取“多行”文本的块。这会将您的数据拆分为双换行符:

use v5.10;

$/ = "\n\n";

while( <INPUT> ) {
    chomp;
    say "==========\n$_\n----------\n";
    }

用它开始你的程序,并尝试做你想做的其他事情。在下一个问题中,您将获得所需的小型演示程序以获得更好的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.