Lookaheads e lookbehinds não fazem parte da sintaxe Extended Regular Expression (ERE). Você precisa de expressões regulares compatíveis com Perl (PCRE) usando a opção -P
.
Eu tenho um regex que funciona bem para mim. Eu verifiquei no seguinte site: link
(?<=.log:)[^;]*
Infelizmente, não funciona mais quando tento usá-lo com o grep. Eu tento fazer o seguinte:
cat foo.log | grep -E '(?<=.log:)[^;]*'
Eu sei que existem correspondências porque criei e testei meu regex depois desse padrão. Além disso, o parâmetro -E funcionou porque o regex *.*
funcionou bem.
Uma olhada na configuração:
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
Você tem alguma sugestão de por que isso não funciona?
Lookaheads e lookbehinds não fazem parte da sintaxe Extended Regular Expression (ERE). Você precisa de expressões regulares compatíveis com Perl (PCRE) usando a opção -P
.