使用引号,将它们视为字符串。这种方式适用于 mawk、mawk2 和 gnu-gawk。但是您还需要将反斜杠加倍,因为使它们成为字符串会立即吃掉其中一个。
在您的示例中就find("mysql")
足够了。
您实际上可以根据需要让它传递任意正则表达式,而不仅限于 gnu-gawk,只要您愿意将它们设为字符串而不是@/../
其他人提到的语法。这就是 # of 反斜杠产生影响的地方。
你甚至可以用任意字节制作正则表达式,最好是通过八进制代码。如果您"\342\234\234"
使用正则表达式,系统会在匹配之前将其转换为正则表达式中的实际字节。
虽然这种方法没有任何意义,但如果你想 100% 安全并且不想让任意字节到处乱飞,请将其写为
"[\\342][\\234][\\234]" ----> ✜
一旦最初被 awk 读取以创建内部表示,它将如下所示:
[\342][\234][\234]
它仍然会匹配您想要的相同对象(在这种情况下,某种交叉外观的 dingbat)。由于试图将非 ASCII 字节直接包含在方括号中,这将在 gawk 的 unicode 感知模式下发出恼人的警告。对于那个用例,
"\\342\\234\\234" ------(eqv to )---> /\342\234\234/
会让傻瓜保持快乐和安静。最近我一直在填补我自己代码中的空白并编写可以模仿 perl 喜欢的所有 Unicode 脚本类的正则表达式。