我想做一些简单的事情:
myregex = "A\?B"
或
if (match($O, "A\?B")) print "YES"
else print "NO"
在第一个例子中,我得到了这个:
warning: escape sequence '\?' treated as plain '?'
在第二个例子中,它与相应的行不匹配。
我在Windows上使用GAWK 3.1.6 - 从gnuwin32包
获取它答案 0 :(得分:2)
字符串常量(例如~/.bashrc
)是scanned twice:
awk第一次读取您的程序时,第二次是 它将匹配运算符左侧的字符串 右边的模式。
第一次扫描会吃掉第一个斜杠,所以你需要用另一个反斜杠转义反斜杠,即"A\?B"
:
"A\\?B"
但是,正如在the docs中所说的那样,通常最好使用 regexp常量:
if (match($0, "A\\?B")) print "YES"; else print "NO";