我需要找到所有包含 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
匹配从开始到不是 的任意数量的字符#
,直到MYSTRING
ie 匹配包含 的行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