我已经看到了这个问题: 正则表达式匹配不包含字线?
但我不能得到它的工作。 我有一个shell脚本,我使用
string1.*string2.*string3
为了寻找3个字的文件,按照这个顺序。 但我想改变它,这样,如果badword5是在该文件中的那些话之间的任何地方,没有正则表达式匹配使用grep。
因此,这应该匹配:
./testing/test.txt: let prep = "select string1, dog from cat",
" where apple = 1",
" and string2 = 2",
" and grass = 8",
" and string3 = ?"
但是,这不应该:
./testing/test.txt: let prep = "select string1, dog from cat",
" where apple = 1",
" and string2 = 2",
" and grass = 8",
" and badword5 = 4",
" and string3 = ?"
我尝试过失败:
string1((?!badword5)|.)*string2((?!badword5)|.)*string3
整个脚本:
find . -name "$file_to_check" 2>/null | while read $FILE
do
tr '\n' ' ' <"$FILE" | if grep -q "string1.*string2.*string3"; then echo "$FILE" ; fi
done >> $grep_out