grep 默认解析哪些特殊字符?

grep 默认解析哪些特殊字符?

可能的重复:
在正则表达式中,哪些字符需要转义?

我知道有一个-E标志将“搜索词”视为正则表达式。不过,似乎即使不这样,grep也对某些角色进行了特殊对待。

例如,如果我运行:

grep "$var" *

然后它列出文件的每一行(我假设它用作$行尾正则表达式)。这个时期似乎也在某些情况下寻找任何性格。

那么使用时需要注意哪些特殊字符呢grep

答案1

默认情况下grep使用基本正则表达式 (BRE)。查看 BRE 上的任何资源(例如man grepman regex)来学习语法。 in根本没有被传递,$因为它对于 shell 来说是特殊的。如果你有一个名为的 shell 变量,它的扩展就是实际看到的。如果不这样做,那么只会传递一个与任何地方匹配的空字符串。"$var"grepvargrepgrep

编辑:从BRE 的 POSIX 规范,特殊字符有*, ^, $, ., [,\

如果您只想匹配文字字符串,而不必担心哪些字符在 BRE 中具有特殊含义,那么您可能应该使用fgrep/grep -F代替(它们是相同的东西;都匹配固定字符串)。

相关内容