我对非边界词的概念感到困惑,因为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。
答案 0 :(得分:1)
\Bmalloc\B
表示m
必须在前面加上单词字符,c
必须跟随单词字符。如果您希望它与immmalloc
匹配,请保留第二个\b
原样:
grep -inr '\Bmalloc\b' .
答案 1 :(得分:0)
在grep:
中使用这样的单词边界grep -inr "\<malloc\>"