可能的重复:
在正则表达式中,哪些字符需要转义?
我知道有一个-E
标志将“搜索词”视为正则表达式。不过,似乎即使不这样,grep
也对某些角色进行了特殊对待。
例如,如果我运行:
grep "$var" *
然后它列出文件的每一行(我假设它用作$
行尾正则表达式)。这个时期似乎也在某些情况下寻找任何性格。
那么使用时需要注意哪些特殊字符呢grep
?
答案1
默认情况下grep
使用基本正则表达式 (BRE)。查看 BRE 上的任何资源(例如man grep
和man regex
)来学习语法。 in根本没有被传递,$
因为它对于 shell 来说是特殊的。如果你有一个名为的 shell 变量,它的扩展就是实际看到的。如果不这样做,那么只会传递一个与任何地方匹配的空字符串。"$var"
grep
var
grep
grep
编辑:从BRE 的 POSIX 规范,特殊字符有*
, ^
, $
, .
, [
,\
如果您只想匹配文字字符串,而不必担心哪些字符在 BRE 中具有特殊含义,那么您可能应该使用fgrep
/grep -F
代替(它们是相同的东西;都匹配固定字符串)。