我正在尝试查找所有语句实例,例如
ABCD.Transaction = GlobalCommArea
WXY.Transaction = GlobalCommArea
PQR.Transaction = LMN.Transaction
DEF.XYZ(CStr(i)).Transaction = GlobalCommArea
我唯一想避免的是在任何这些陈述之前存在单引号。
所以,例如。
' PQR.Transaction = GlobalCommArea
无效,但
WXY.Transaction = GlobalCommArea ' 2012
是有效的,因为引用来自行
上的匹配部分如果单引号问题不存在,我可以写一个简单的正则表达式如下 -
grep -nr "\.Transaction" .
如何编写一个正则表达式,可以确保在匹配前的任何地方都没有单引号?
答案 0 :(得分:1)
grep -nrE "^[^']+\.Transaction"
答案 1 :(得分:0)
不确定你正在使用哪种grep,但GNU grep 2.9(在我的Ubuntu盒子上)会这样做(-P
开关打开PCRE,所以前瞻工作):
grep -P "^(?! *').+Transaction.+$" file_to_search.txt
说明:
^ # start at beginning of line
(?! *') # negative lookahead for optional space and a single quote
.+Transaction # one or more characters up to 'Transaction'
.+$ # all remaining character up to end of line
编辑:显示在cygwin上工作
$ uname -r
1.7.11(0.260/5/3) # cygwin ver. 1.7.11
$ grep --version
GNU grep 2.6.3
$ cat foo.txt # contents of the file I'm grepping
ABCD.Transaction = ' GlobalCommArea
' WXY.Transaction = GlobalCommArea
PQR.Transaction = LMN.Transaction
' DEF.XYZ(CStr(i)).Transaction = GlobalCommArea
$ grep -P "^(?! *').+Transaction.+$" foo.txt
ABCD.Transaction = ' GlobalCommArea
PQR.Transaction = LMN.Transaction