gpt4 book ai didi

regex - 在 Perl 中打印没有子字符串的字符串

转载 作者:行者123 更新时间:2023-12-05 00:59:48 34 4
gpt4 key购买 nike

我有一个格式如下的日志文件:

[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/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com