grep-Dateien, die einen nicht kommentierten Text enthalten

grep-Dateien, die einen nicht kommentierten Text enthalten

Ich muss alle Dateien finden, die MYSTRING enthalten und vor denen kein „#“ steht.

Dies hier sollte beispielsweise FALSE zurückgeben, da in derselben Zeile vor MYSTRING ein „#“ vorkommt:

a=1      #  otherstring  MYSTRING

und dieses sollte TRUE zurückgeben:

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

Ich habe in ähnlichen Fragen nachgesehen, konnte aber nicht genau die gleiche Situation finden.

Antwort1

Du kannst tun:

grep '^[^#]*MYSTRING' file.txt
  • ^[^#]*MYSTRINGpasst zu einer beliebigen Anzahl von Zeichen vom Anfang, die nicht ist #, bis , MYSTRINGdh es passt zu Zeilen, die haben MYSTRING, aber nirgendwo #davor in der Zeile

Beispiel:

% 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

verwandte Informationen