如何制作;grep“;输出包含匹配项的完整单词?

如何制作;grep“;输出包含匹配项的完整单词?,grep,Grep,我想让grep打印出包括比赛在内的所有完整单词 谷歌没有帮助我。以下是我所尝试的: cat file.txt 21676 Mm.24685 NM_009346 ENSMUSG00000055320 20349 Mm.134093 NM_011348 ENSMUSG00000063531 12456 Mm.134000 NM_011228 GM415666 grep -o "ENSMUS" file.txt ENSMUS ENSMUS

我想让grep打印出包括比赛在内的所有完整单词

谷歌没有帮助我。以下是我所尝试的:

cat file.txt
21676   Mm.24685    NM_009346   ENSMUSG00000055320
20349   Mm.134093   NM_011348   ENSMUSG00000063531
12456   Mm.134000   NM_011228   GM415666

grep -o "ENSMUS" file.txt
ENSMUS
ENSMUS
期望输出:

ENSMUSG00000055320
ENSMUSG00000063531
谢谢你的帮助

您可以使用:

grep-wo“ENSMUS[^[:blank:][]*”file.txt
ENSMUG00000055320
ENSMUG00000063531

此处
[^[:blank:][]*
将匹配0个或更多非空白字符<代码>-w将确保完整的单词匹配。

要提取没有版本号的ENSEMBL鼠标登录号,请执行以下操作:

grep -Po 'ENSMUS\w+' in_file
grep -Po 'ENSMUS\S+' in_file
版本号为:

grep -Po 'ENSMUS\w+' in_file
grep -Po 'ENSMUS\S+' in_file
这里,
\w+
:1个或多个单词字符(
[A-Za-z0-9\
)。
\S+
:1个或多个非空白字符(您也可以更严格地使用
[\w.]+
,即1个或多个单词字符或文字点)

在这里,GNU使用以下选项:
-P
:使用Perl正则表达式。
-o
:仅打印匹配项(每行1个匹配项),而不是整行

另请参见:


ENSMUS可以在start之外的任何地方吗?不,总是在start,前面有tab。谢谢。使用GNU awk:
awk'/ENSMUS/'RS='[\t\n]'文件
可以按需要工作!也谢谢你的解释!谢谢,更不用说打字了:)