/[SELECT]{6}[ ]{0,50}[@clnt_id_n]{10}[ \t]{0,50}[=]{1}[ \t]{0,50}[0-9]{2,10}/g
Run Code Online (Sandbox Code Playgroud)
上面的正则表达式在regexr.com上适用于下面
SELECT @clnt_id_n = 38404
Run Code Online (Sandbox Code Playgroud)
但是,当我使用grep如下时,它似乎不起作用:
egrep "[SELECT]{6}[ ]{0,50}[@clnt_id_n]{10}[ \t]{0,50}[=]{1}[ \t]{0,50}[0-9]{2,10}" filename
Run Code Online (Sandbox Code Playgroud)
[SELECT] {6}匹配"SELECT"但也匹配"ELSLET"或6 C,E,L,S,T的任意组合.要仅匹配"SELECT",您只需使用"SELECT".
要匹配您编写的测试行,请考虑使用:
grep -E "SELECT\s+@clnt_id_n\s*=\s*[1-9]+[0-9]*"
Run Code Online (Sandbox Code Playgroud)
'\ s'匹配任何空格字符,如空格和制表符.'+'表示1或更多,'*'表示0或更多.
请注意,上面的正则表达式假定'='右侧的数字不能以0开头.