当我使用 grep 命令时,会拾取所有出现的单词,即使它们是其他单词的一部分。例如,如果我使用 grep 查找单词“the”的出现,它也会突出显示“theatre”中的“the”
有没有办法调整 grep 命令,使其只拾取完整单词,而不是部分单词?
答案1
-w, --word-regexp
Select only those lines containing matches that form whole
words. The test is that the matching substring must either be
at the beginning of the line, or preceded by a non-word
constituent character. Similarly, it must be either at the end
of the line or followed by a non-word constituent character.
Word-constituent characters are letters, digits, and the
underscore.
从man grep
答案2
你也可以使用这个:
echo "this is the theater" |grep --color '\bthe\b'
对于一个单词来说与-w 相同。
但是如果您需要搜索多个模式,您可以使用 \b,否则如果使用 -w,所有模式都将被视为单词。
例如 :
grep -w -e 'the' -e 'lock'
将突出显示 和 锁,但不突出显示钥匙锁/挂锁等。
使用 \b 您可以以不同的方式对待每个 -e 模式。
答案3
\<
您可以使用标记(或)测试单词的开头(或结尾)是否存在\>
。
因此,
grep "\<the\>" << .
the cinema
a cinema
the theater
a theater
breathe
.
给出
the cinema
the theater