我有一个Perl脚本,它以文本形式向我提供结果。 我只需打印本文中的一些信息。 如何定义要在Perl中打印的开始模式和结束模式?
答案 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)