我想在文件中找到一个确切的单词。单词是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
我在这里错过了一些开关吗?
非常感谢。
答案 0 :(得分:3)
尝试使用单词边界的grep:
grep '\<myServer\>' test-file.txt
编辑:看起来您不想将连字符视为字边界。为此目的使用这样的grep:
grep -E '\<myServer\>([^-]|$)' test-file.txt
答案 1 :(得分:1)
您可以使用\<
和\>
来识别单词的开头和结尾。因此,例如,给予\<myS
grep将搜索带有以myS
开头的单词的行。
当然,要搜索确切的单词,您可以这样搜索:
grep '\<myServer\>' test-file.txt
在你的大部分尝试中,你都在做完全无关紧要的事情:
^
和$
匹配行的开头和结尾。-F
搜索多个固定字符串-x
搜索与正则表达式相匹配的整行注意:您的-w
可以正常使用。但是,似乎您对“整个单词”的定义与POSIX的看法不同。
答案 2 :(得分:0)
您可以使用\b
表示字边界:
rep '\bmyServer\b' test-file.txt