AWK 打印正则表达式模式

Pet*_*ter 0 awk regular-expression

我正在尝试为以下邮件日志打印正则表达式模式。特别是我试图获取方括号之间的 ID(请参阅第二行以供参考)。

Mar 29 03:48:13 mx-150 clamsmtpd: 14114F: accepted connection from: 127.0.0.1
Mar 29 03:48:13 mx-150 postfix/smtpd[7445]: connect from unknown[127.0.0.1]
Mar 29 03:48:13 mx-150 spamd[15674]: prefork: child states: II
Run Code Online (Sandbox Code Playgroud)

并使用以下命令:

awk '/\[\d+\]/ { print }' maillog
Run Code Online (Sandbox Code Playgroud)

根据https://regex101.com/r/pL7kN2/1我得到 1 场比赛,但是,awk 没有返回任何内容。这是为什么?

Jan*_*nis 5

尝试标准正则表达式(而不是正则perl表达式)。这将打印匹配的行:

awk '/\[[[:digit:]]+\]/ { print }' maillog
Run Code Online (Sandbox Code Playgroud)

提取并打印括号内的匹配值:

awk 'match($0,/\[[[:digit:]]+\]/) { print substr($0,RSTART+1,RLENGTH-2)}' maillog
Run Code Online (Sandbox Code Playgroud)