grep - excluindo cadeia inicial

0

Esta pergunta é similar àquela one mas quero excluir uma string antecipadamente. Suponha que o arquivo:

cVar=
 cVar=
1 cVar=
Var=
 Var=

Eu quero grep Var , mas não cVar . Eu tentei grep -P '(?!c)Var' file , mas eu recebo todas as linhas do arquivo. Quando tento grep -P ' (?!c)Var' file (anote o espaço em branco antes do colchete), recebo a última linha como deveria.

Um * ou . não ajuda.

Eu testei no Ubuntu 16.04 LTS, 14.04 LTS e 10.04 LTS. Sempre o mesmo resultado.

    
por musbach 18.11.2016 / 23:18

1 resposta

3

Na sintaxe de expressão regular compatível com Perl (PCRE), (?!c) é uma aparência negativa à frente , enquanto o que você quer neste caso é uma aparência negativa por trás

$ grep -P '(?<!c)Var' file
Var=
 Var=

Veja as Asserções Lookahead e Lookbehind Zero-Length

    
por steeldriver 19.11.2016 / 00:17