由於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。
我運行OSX(BSD這樣的grep),但'\ B'爲我工作。你嘗試過'\ W'嗎?如果'malloc'是一行上的直接字符序列,但是否則應該是等價的。例如,'grep -inr'\ Wmalloc' – jmar777
@ jmar777你的grep命令確實有效,但我仍然不明白爲什麼\ B不會僅僅用lmmmalloc找到行。 – Vivek
不幸的是,我對grep或者GNU/BSD版本之間的差異不甚瞭解,所以不能真正對此進行評論。絕對奇怪,因爲我期望'\ B'被支持... – jmar777