我需要匹配update sims
个文件中的字符串.sql
,以防止对表sims
进行任何更新。我有cat test.sql | grep -iE '^\s*UPDATE\s+sims,*\s+'
,它不会错误地匹配,说update simsfdafsa
。它将与update sims set
和update sims, table1, table2...
匹配。
但我无法匹配任何换行符。如果有人写道:
update sims
set dfa=fdag
grep失败了。在sims
之后有一个换行符。我尝试了\n
和\s
,但都没有效果。我想知道如何在egrep中匹配换行符?
答案 0 :(得分:1)
将此作为测试文件使用:
cat ~/tmp/test
update sims
set dfa=fdag
update simsafing
update sims, test1
update simss
这个正则表达式根据需要解析它:
egrep 'update sims$|sims[, ]' ~/tmp/test
update sims
update sims, test1
此页https://www.gnu.org/software/sed/manual/html_node/Regular-Expressions.html解释了sed知道的所有正则表达式模式(它是基本的正则表达式)。因为sed是'贪婪的'(一旦你读过那个页面就会知道这意味着什么)它会尝试尽可能多地匹配模式,所以[,]会尽可能多地匹配运行中的空格或逗号