我试图了解 grep 如何决定将 $ 作为正则表达式或可搜索字符。我的结果表明 grep 不一致地决定 $ 的含义。
因此,我做了一个基本的例子:
$ cat testfile
$illy
$unset
在这里,我想看看是否可以使用正则表达式获取以“illy”结尾的行:
$ grep 'illy$' testfile
$illy
它似乎有效,它正在将 'illy$' 标准解释为 $ 是一个正则表达式,表示“在行尾匹配这个表达式”。所以我现在的想法是,grep 将 $ 解释为正则表达式标准,而不是字符串。因此,如果我想尝试使用 grep 查找“$illy”,那么这不应该匹配任何内容,因为它将 $ 解释为正则表达式。
然而:
$ grep '$illy' testfile
$illy
为什么会找到这条线?这证明即使是 grep 也不知道如何解释字符 $。更不用说,我自己试图理解它。
grep
默认情况下使用基本正则表达式(BRE),并且$
是 BRE 中仅在表达式末尾的特殊字符。如果要将
grep
模式作为扩展的正则表达式处理,请使用-E
选项-