我有一个正则表达式,它对我来说很好用。我在以下网站上检查了它:https://www.regex101.com/
(?<=.log:)[^;]*
不幸的是,当我尝试将它与 grep 一起使用时,它不起作用。我尝试做以下事情:
cat foo.log | grep -E '(?<=.log:)[^;]*'
我知道有匹配项,因为我根据此模式创建并测试了正则表达式。此外,-E 参数有效,因为正则表达式*.*
运行良好。
以下是我的目标文件中的一些示例行:
201407010300.log:2014-07-01 03:00;10.112.64.250;2;1145439;ULC IBM
201407010100.log:2014-07-01 01:00;10.112.64.250;2;1145216;ULC IBM
201407010100.log:2014-07-01 01:00;10.112.64.250;3;968549;ULC Primeline
你对为什么这不起作用有什么建议吗?
答案1
前瞻和后瞻不是扩展正则表达式 (ERE) 语法的一部分。使用该-P
选项,您需要 Perl 兼容正则表达式 (PCRE)。