是否可以使用 grep 只提取完整单词?

是否可以使用 grep 只提取完整单词?

当我使用 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

相关内容