1

我试图在文件中找到一个确切的单词。这个词是 myServer ,我试图在其中找到它的文件内容是:

This is myServer and it is cool
This is myServer-test and it is cool

这是我各种尝试的结果:

grep '^myServer$' test-file.txt
grep -Fx myServer test-file.txt

--> no results

grep -w myServer test-file.txt
grep -w myServer test-file.txt
grep '\<myServer\>' test-file.txt
grep '\bmyServer\b' test-file.txt
-->
This is myServer and it is cool
This is myServer-test and it is cool

我在这里错过了一些开关吗?

非常感谢。

4

3 回答 3

3

尝试 grep 与单词边界:

 grep '\<myServer\>' test-file.txt

编辑:看起来您不想将连字符视为单词边界。为此目的使用这样的grep:

grep -E '\<myServer\>([^-]|$)'  test-file.txt
于 2013-04-04T16:36:08.170 回答
1

您可以使用\<and\>来识别单词的开头和结尾。因此,例如给\<mySgrep 将搜索以 . 开头的单词的行myS

自然地,要搜索一个确切的词,你会这样搜索:

grep '\<myServer\>' test-file.txt

在您的大多数尝试中,您都在做完全不相关的事情:

  • ^并匹配$的开头和结尾。
  • -F搜索多个固定字符串
  • -x搜索匹配正则表达式的整行

注意:你-w会正常工作。但是,您对“整个单词”的定义似乎与 POSIX 的想法不同。

于 2013-04-04T16:36:46.783 回答
0

您可以使用\bwhich 表示单词边界:

rep '\bmyServer\b' test-file.txt
于 2013-04-04T16:37:14.800 回答