在 cygwin 上使用 grep 转义元字符
Escaping metacharacters using grep on cygwin
在 cygwin 上使用 grep 搜索 'employee_id',条件如下:
- 前面没有下划线
- 紧跟 space、右括号或句号
后面的表达式使用文本示例在 Regex Builder 2.05 中有效,但在 grep 中使用时 return 不会产生这样的结果:
grep -E -r '[^_]employee_id[ \]\.]' ./*
我不确定这是否是通过命令行输入表达式的一些特殊性,或者它是否与许多正则表达式之间的差异有关 "dialects",但我没有遇到任何替代方法在我搜索答案时转义字符。
有人可以为 return 我要查找的结果提供正确的 grep 语法吗?
您可以使用:
grep -E -r '(^|[^_])employee_id[] .]' .
(^|[^_])
因为 employee_id
可以在行首或前面有任何非下划线字符。
字符 class 内的 DOT 或 ]
无需转义。但请记住收盘 ]
必须紧接着 开盘 [
在 cygwin 上使用 grep 搜索 'employee_id',条件如下:
- 前面没有下划线
- 紧跟 space、右括号或句号
后面的表达式使用文本示例在 Regex Builder 2.05 中有效,但在 grep 中使用时 return 不会产生这样的结果:
grep -E -r '[^_]employee_id[ \]\.]' ./*
我不确定这是否是通过命令行输入表达式的一些特殊性,或者它是否与许多正则表达式之间的差异有关 "dialects",但我没有遇到任何替代方法在我搜索答案时转义字符。
有人可以为 return 我要查找的结果提供正确的 grep 语法吗?
您可以使用:
grep -E -r '(^|[^_])employee_id[] .]' .
(^|[^_])
因为employee_id
可以在行首或前面有任何非下划线字符。字符 class 内的 DOT 或
]
无需转义。但请记住收盘]
必须紧接着 开盘[