У меня есть regex, который хорошо работает для меня. Я проверил его на следующем сайте: https://www.regex101.com/
(?<=.log:)[^;]*
К сожалению, это не работает больше, когда я пытаюсь использовать его с grep. Я пытаюсь сделать следующую вещь:
cat foo.log | grep -E '(?<=.log:)[^;]*'
Я знаю, что существуют соответствия, потому что я создал и протестировал свой regex после этого шаблона. Также-E параметрический усилитель работал потому что regex *.*
хорошо работавший.
Взгляд в конфигурацию:
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
У Вас есть какие-либо предложения, почему это не работает?
Lookaheads и lookbehinds не являются частью синтаксиса Extended Regular Expression (ERE). Вам нужны Perl-совместимые регулярные выражения (PCRE), используя опцию -P
.