awk检查文件中的多个模式

awk检查文件中的多个模式,awk,Awk,这是我的密码: /usr/bin/gawk '{ !/simsX.ip-17-31-28-19/ { a[".*Unauthorized.*Dup.*"] += gsub("(| ).*Unauthorized.*Duplication.*( |)", "&") } !/simsX.ip/ { a[".*En_NoConn-.*"] += gsub("(| ).*En_NoConn-.*( |)", "&") } } END { for (i in a) prin

这是我的密码:

/usr/bin/gawk '{
!/simsX.ip-17-31-28-19/ { a[".*Unauthorized.*Dup.*"] += gsub("(| ).*Unauthorized.*Duplication.*( |)", "&") }
!/simsX.ip/ { a[".*En_NoConn-.*"] += gsub("(| ).*En_NoConn-.*( |)", "&") }        
} END {
for (i in a)
printf("%s=%s\n", i, a[i])
}' /home/nagios/graphite-web_access.log

运行上述代码时,出现以下错误:

gawk: cmd. line:2:                                                                      !/simsX.ip-17-31-28-19/ { a[".*Unauthorized.*Dup.*"] += gsub("(| ).*Unauthorized.*Duplication.*( |)", "&") }
gawk: cmd. line:2:                                                                                              ^ syntax error
gawk: cmd. line:3: !/simsX.ip/ { a[".*En_NoConn-.*"] += gsub("(| ).*En_NoConn-.*( |)", "&") }   
gawk: cmd. line:3:             ^ syntax error
假设此代码在文件中搜索指定字符串,然后以以下格式输出结果:

.*Unauthorized.*Dup.*=48
.*En_Conn-.*=0


我无法确定问题所在或如何解决。请注意。

您将独立条件放在脚本的操作部分,而不是脚本的条件部分

好:

或者不太可能:

awk '{
    if (!/simsX.ip-17-31-28-19/) { a[".*Unauthorized.*Dup.*"] += gsub("(| ).*Unauthorized.*Duplication.*( |)", "&") }
    if (!/simsX.ip/) { a[".*En_NoConn-.*"] += gsub("(| ).*En_NoConn-.*( |)", "&")
}
'

我不明白。请详细说明
awk '{ <condition> { <action> } }`
awk '{   # <<<< NOTE!!!!
    !/simsX.ip-17-31-28-19/ { a[".*Unauthorized.*Dup.*"] += gsub("(| ).*Unauthorized.*Duplication.*( |)", "&") }
    !/simsX.ip/ { a[".*En_NoConn-.*"] += gsub("(| ).*En_NoConn-.*( |)", "&")
}    # <<<< NOTE!!!
'
awk '
    !/simsX.ip-17-31-28-19/ { a[".*Unauthorized.*Dup.*"] += gsub("(| ).*Unauthorized.*Duplication.*( |)", "&") }
    !/simsX.ip/ { a[".*En_NoConn-.*"] += gsub("(| ).*En_NoConn-.*( |)", "&") }        
'    
awk '{
    if (!/simsX.ip-17-31-28-19/) { a[".*Unauthorized.*Dup.*"] += gsub("(| ).*Unauthorized.*Duplication.*( |)", "&") }
    if (!/simsX.ip/) { a[".*En_NoConn-.*"] += gsub("(| ).*En_NoConn-.*( |)", "&")
}
'