匹配后在动态行中搜索

时间:2018-08-31 15:50:56

标签: perl

亲爱的

我下面的文件格式如下:

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:

发生的情况是,比赛后下方的行数非常动态。

发生的情况是,匹配项下方的行数非常动态,并且在同一文件中可能有几行 相同的匹配项,并且在文件运行时也需要显示它们。

你们能帮我吗?

1 个答案:

答案 0 :(得分:2)

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

use v5.10;

$/ = "\n\n";

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

以此开始您的程序,然后尝试做您想做的其他事情。在您的下一个问题中,您将获得小型演示程序,以获取更好的帮助。