grep-файлы, содержащие не прокомментированный текст

grep-файлы, содержащие не прокомментированный текст

Мне нужно найти все файлы, содержащие MYSTRING, перед которыми нет символа «#».

например, этот код должен вернуть FALSE, так как в той же строке перед MYSTRING встречается символ "#":

a=1      #  otherstring  MYSTRING

и этот должен вернуть ИСТИНА:

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

Я проверил похожие вопросы, но не смог найти точно такую ​​же ситуацию.

решение1

Ты можешь сделать:

grep '^[^#]*MYSTRING' file.txt
  • ^[^#]*MYSTRINGсоответствует любому количеству символов от начала, которое не является #, до MYSTRINGт.е. соответствует строкам, которые содержат MYSTRING, но не находятся #в любом месте строки до этого

Пример:

% 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

Связанный контент