egrep正则表达式匹配换行符

时间:2016-06-01 17:27:30

标签: command-line grep

我需要匹配update sims个文件中的字符串.sql,以防止对表sims进行任何更新。我有cat test.sql | grep -iE '^\s*UPDATE\s+sims,*\s+',它不会错误地匹配,说update simsfdafsa。它将与update sims setupdate sims, table1, table2...匹配。

但我无法匹配任何换行符。如果有人写道:

update sims
set dfa=fdag

grep失败了。在sims之后有一个换行符。我尝试了\n\s,但都没有效果。我想知道如何在egrep中匹配换行符?

1 个答案:

答案 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是'贪婪的'(一旦你读过那个页面就会知道这意味着什么)它会尝试尽可能多地匹配模式,所以[,]会尽可能多地匹配运行中的空格或逗号