从Perl中的匹配模式开始打印

时间:2016-09-17 09:16:24

标签: perl

我有一个Perl脚本,它以文本形式向我提供结果。 我只需打印本文中的一些信息。 如何定义要在Perl中打印的开始模式和结束模式?

1 个答案:

答案 0 :(得分:0)

不知道你究竟在问什么,但我会试一试。 假设您正在简化包含纯文本的文件,并且您只想过滤掉包含“qos-policing-policy rate-2M-in(applied)qos-metering-policy rate-2M-out(applied)”的行和只提取这些单词,然后下面的代码可以给出如何编写脚本的想法:

Perl计划:

#!/usr/bin/perl
# test.pl

use strict;
use warnings;

while(<>) {
        my @a = m/(qos-\S+\s+\S+\s+\(applied\))/g; 
        for my $i (@a) {
            print "$i ";
        }
        print "\n" if (@a);
}

这将是你的开始模式和结束模式:

m/qos-\S+\s+\S+\s+\(applied\)/g

开头是:

qos-

并结束:

\(applied\)

虽然“g”选项用于传入线路上的全局匹配。

<强>输入:

> cat textFile.txt
Current port-limit unlimited Protocol Stack IPV4 ip address (applied) qos-policing-policy rate-2M-in (applied) qos-metering-policy rate-2M-out (applied) [sCLIPS]Redback(config-ctx)
line number two is here
Stack IPV4 ip address (applied) qos-policing-policy rate-299M-in (applied) qos-metering-policy

<强>输出:

> cat textFile.txt | perl ./test.pl
qos-policing-policy rate-2M-in (applied) qos-metering-policy rate-2M-out (applied)
qos-policing-policy rate-299M-in (applied)