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 没有返回任何内容。这是为什么?
尝试标准正则表达式(而不是正则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)