匹配非边界词

时间:2013-03-29 19:13:43

标签: regex grep

我对非边界词的概念感到困惑,因为grep命令没有返回我期望它返回的内容。我正在寻找只匹配 malloc 字而不是 lmmmalloc 的行,所以我决定使用:

grep -inr '\bmalloc\b' .

返回以下内容:

./xxxx.xx:918:    /* Free the malloc before exiting the function. */

使用以下命令修改grep命令以检索包含 lmmmalloc 的所有行:

grep -inr '\Bmalloc\B' .

我希望\ B返回包含子字符串 malloc 的行,而不是先前发布的相同结果。我希望结果如下:

grep -inr '\blmmmalloc\b' 
./xxxx.xx:376:  string_temp = (char *) lmmmalloc (cxp,   

我的理解是否有缺陷,如果是这样,有人可以澄清并纠正grep命令吗?

我正在使用GNU grep 2.5.1。

2 个答案:

答案 0 :(得分:1)

\Bmalloc\B表示m必须前面加上单词字符,c必须跟随单词字符。如果您希望它与immmalloc匹配,请保留第二个\b原样:

grep -inr '\Bmalloc\b' .

答案 1 :(得分:0)

在grep:

中使用这样的单词边界
grep -inr "\<malloc\>"