-1

grep コマンドが期待どおりの結果を返さないため、非境界単語の概念に困惑しています。lmmmallocではなくmallocワードのみに一致する行を探しているので、次を使用することにしました。

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必要があることを意味します。一致させたい場合は、2 番目をそのままにしておきます。cimmmalloc\b

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

grep では次のように単語境界を使用します。

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