perlだと\bでいけるけど、egrep(grep -E)だとどうなの?わからないから調べた。'\<'と'\>'、もしくは'\b'を使えば良いらしい。
grep '\<hoge\>' hoge.txt
これで"hoge fuga"にはマッチするけど、"hogehoge"にはマッチしない。
man grep
キャレット ^ と、ドル記号 $ は、それぞれ行頭と行末の空文字列にマッチ する メタ文字です。 シンボル \< とシンボル \> は、それぞれ単語の先頭と末尾の空文字列にマッチするメタ文字です。 シンボル \b は単語の端の空文字列 にマッチします。シンボル \B は単語の端 以外の空文字列にマッチします。