我正在编写一个脚本来从postfix日志中提取消息ID,但是日志可以包含不同的日期戳,因此字段数可以不同,因此awk'{print $ 6}'这是消息ID字段不起作用时间和我听说SED也更快。
因此,我需要从日志的每一行获得的唯一数据是ID:
7B01038BFDB
cat mail.log | grep 'postfix' | grep -i email@address.com | sed -n 's/.*[0-9A-Z]{11}:*/\1/p'
但这个正则表达式不起作用。
答案 0 :(得分:1)
您需要将sed
模式调整为
sed 's/.*\([0-9A-Z]\{11\}\):.*/\1/'
^^ ^^ ^^^^ ^^
要使用反向引用,您需要使用\(...\)
定义捕获组,并且还必须在BRE POSIX中转义范围量词。此外,模式应以.*
结尾以匹配行的其余部分。