archivos grep que contienen un texto no comentado

archivos grep que contienen un texto no comentado

Necesito encontrar todos los archivos que contengan MYSTRING y que no tengan un "#" antes.

por ejemplo, este debería devolver FALSO ya que aparece "#" antes de MYSTRING en la misma línea:

a=1      #  otherstring  MYSTRING

y este debería devolver VERDADERO:

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

Revisé preguntas similares, pero no pude encontrar exactamente la misma situación.

Respuesta1

Tu puedes hacer:

grep '^[^#]*MYSTRING' file.txt
  • ^[^#]*MYSTRINGcoincide con cualquier número de caracteres desde el inicio que no es #, hasta, MYSTRINGes decir, coincide con líneas que tienen MYSTRING, pero no #en ningún lugar antes de eso en la línea

Ejemplo:

% 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

información relacionada