使用grep仅提取整个单词

Tit*_*llo 17 regex grep match exact-match

我有一个大文本文件.我需要提取包含确切单词"DUSP1"的所有行.这里有一个例子:

9606    ENSP00000239223 DUSP1   BLAST
9606    ENSP00000239223 DUSP1-001 Ensembl
Run Code Online (Sandbox Code Playgroud)

我想要检索第一行而不是第二行.

我尝试了几个命令:

grep -E "^DUSP1"
grep '\<DUSP1\>'
grep '^DUSP1$'
grep -w DUSP1
Run Code Online (Sandbox Code Playgroud)

但它们似乎都不起作用.我应该使用哪个选项?

Phi*_*ek_ 32

如果你想精确地grep整个单词,你可以使用这样的单词边界:

grep '\bDUSP1\b'
Run Code Online (Sandbox Code Playgroud)

这匹配开头和结尾的确切单词.

  • 这应该是公认的答案,前后并不总是有空格(什么时候才是最后一个字?). (6认同)

Gil*_*not 14

您遇到的问题是短划线( - )被视为grep单词分隔符.

你应该尝试这个命令:

grep '\sDUSP1\s' file
Run Code Online (Sandbox Code Playgroud)

确保你的单词周围有空格.