我只是好奇为什么 grep 以这种方式匹配事物。
例如,假设我正在尝试查找在一个句子中出现两次的单词(而不是作为其他单词的一部分)。所以我试图找到如下行:
hello everybody hello
而不是像下面这样:
hello everybody hellopeople
那么为什么以下 grep 表达式有效:
grep -E '(\<.*\>).*\<\1\>' file
而不是以下内容:
grep -E '(\<.*\>).*\1' file
我原以为第二个会起作用,因为单词边界(\< 和 \>)在第二个匹配的括号内,但事实并非如此。必须在反向引用周围设置单词边界似乎相当令人困惑,有人可以解释为什么 grep 以这种方式匹配行,或者可能进一步详细说明这个想法吗?