我有一个格式如下的日志文件:
[Time] [mmm] [DATA] [rule] [a.a.a.a]
[Time] [ppp] [DATA] [rule] [a.a.a.a]
[Time] [mmm] [DATA] [rule] [c.c.c.c]
在无法'找到一种方法来打印没有特定子字符串的这个字符串。我希望能够在没有匹配
[mmm]
的子字符串行的情况下打印整个字符串输出和 [a.a.a.a]
.最终输出将是:[Time] [ppp] [DATA] [rule] [a.a.a.a]
[Time] [mmm] [DATA] [rule] [c.c.c.c]
我是使用带有两个子字符串的索引模块还是以某种方式使用 grep?我看错了吗?任何帮助深表感谢!!!
在我的 perl 脚本中,我有一个部分搜索此部分并将此部分打印为字符串:
sub Section
{
my @event_rule = ("A", "B", "C");
foreach (@event_rule)
{
my $result1 = `fgrep -h 'DATA' $logfile1 | grep "$_" | head -n10`;
if (length $result1)
{
print "$result1\n";
}
}
}
最佳答案
不需要像 grep
这样的外部程序:
#!/usr/bin/perl
use warnings;
use strict;
my @rule = ('[mmm]', '[a.a.a.a]');
my $regex = join '.*', map quotemeta, @rule; # Create one regular expression from the "rules".
$regex = qr/$regex/; # Compile it.
my $c = 0;
while (<>) {
$c += print if /DATA/ && ! /$regex/;
last if $c > 9; # Only print the first 10 lines.
}
关于regex - 在 Perl 中打印没有子字符串的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30233389/