メールログに次の正規表現パターンを印刷しようとしています。特に角かっこの間でIDを取得しようとしています(参照のために2行目を参照)。
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
次のコマンドを使用します。
awk '/\[\d+\]/ { print }' maillog
~によるとhttps://regex101.com/r/pL7kN2/11つの一致を得ましたが、awkは何も返しません。なぜそんなことですか?
ベストアンサー1
perl
(正規表現の代わりに)標準正規表現を試してください。これにより、一致する行が印刷されます。
awk '/\[[[:digit:]]+\]/ { print }' maillog
括弧内に一致する値を抽出して印刷するには、次のようにします。
awk 'match($0,/\[[[:digit:]]+\]/) { print substr($0,RSTART+1,RLENGTH-2)}' maillog