包含非注释文本的 grep 文件

包含非注释文本的 grep 文件

我需要找到所有包含 MYSTRING 且之前没有“#”的文件。

例如,这个应该返回 FALSE,因为同一行中 MYSTRING 之前出现了“#”:

a=1      #  otherstring  MYSTRING

这个应该返回 TRUE:

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

我查过类似的问题,但找不到完全相同的情况。

答案1

你可以做:

grep '^[^#]*MYSTRING' file.txt
  • ^[^#]*MYSTRING匹配从开始到不是 的任意数量的字符#,直到MYSTRINGie 匹配包含 的行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

相关内容