在 cygwin 上使用 grep 转义元字符

Escaping metacharacters using grep on cygwin

在 cygwin 上使用 grep 搜索 'employee_id',条件如下:

后面的表达式使用文本示例在 Regex Builder 2.05 中有效,但在 grep 中使用时 return 不会产生这样的结果:

grep -E -r '[^_]employee_id[ \]\.]' ./*

我不确定这是否是通过命令行输入表达式的一些特殊性,或者它是否与许多正则表达式之间的差异有关 "dialects",但我没有遇到任何替代方法在我搜索答案时转义字符。

有人可以为 return 我要查找的结果提供正确的 grep 语法吗?

您可以使用:

grep -E -r '(^|[^_])employee_id[] .]' .
  • (^|[^_]) 因为 employee_id 可以在行首或前面有任何非下划线字符。

  • 字符 class 内的 DOT 或 ] 无需转义。但请记住收盘 ] 必须紧接着 开盘 [