我需要找到所有包含 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