-1

我对非边界词的概念感到困惑,因为 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。

4

2 回答 2

1

\Bmalloc\B表示前面m必须有一个单词字符,并且后面必须有一个单词字符。如果您希望它匹配,请保留第二个原样:cimmmalloc\b

grep -inr '\Bmalloc\b' .
于 2013-03-29T19:39:10.393 回答
0

在 grep 中使用这样的单词边界:

grep -inr "\<malloc\>" 
于 2013-03-29T19:34:08.473 回答