arquivos grep que contêm um texto não comentado

arquivos grep que contêm um texto não comentado

Preciso encontrar todos os arquivos que contenham MYSTRING que não tenham um "#" antes disso.

por exemplo, este deve retornar FALSE pois há uma ocorrência de "#" antes de MYSTRING na mesma linha:

a=1      #  otherstring  MYSTRING

e este deve retornar TRUE:

 # another line above is commented  but that's not on the same line
     a=1; MYSTRING

Verifiquei perguntas semelhantes, mas não consegui encontrar exatamente a mesma situação.

Responder1

Você pode fazer:

grep '^[^#]*MYSTRING' file.txt
  • ^[^#]*MYSTRINGcorresponde a qualquer número de caracteres desde o início que não é #, até MYSTRINGou seja, corresponde a linhas que possuem MYSTRING, mas não #em nenhum lugar antes disso na linha

Exemplo:

% cat file.txt
 # another line above is commented  but that's not on the same line
     a=1; MYSTRING
a=1      #  otherstring  MYSTRING

% grep '^[^#]*MYSTRING' file.txt
     a=1; MYSTRING

informação relacionada