Regex grep-匹配单词,后面什么都不匹配

Regex grep-匹配单词,后面什么都不匹配,regex,grep,Regex,Grep,我有一个以下格式的文件(以数千行和制表符分隔): 我想从第二个选项卡返回只包含“3'UTR”的所有行。期望输出: Gnl3l 3'UTR Mecp2 3'UTR Mecp2 3'UTR 关于使用grep/regex执行此操作有何想法?最好在此处使用awk,因为使用awk可以轻松匹配特定字段,而无需使用复杂的regex: awk -v s="3'UTR" '$2==s' file Gnl3l 3'UTR Mecp2 3'UTR Mecp2 3'UTR 但

我有一个以下格式的文件(以数千行和制表符分隔):

我想从第二个选项卡返回只包含
“3'UTR”
的所有行。期望输出:

Gnl3l   3'UTR    
Mecp2   3'UTR    
Mecp2   3'UTR

关于使用
grep
/regex执行此操作有何想法?

最好在此处使用
awk
,因为使用
awk
可以轻松匹配特定字段,而无需使用复杂的regex:

awk -v s="3'UTR" '$2==s' file
Gnl3l   3'UTR
Mecp2   3'UTR
Mecp2   3'UTR
但是这里有一个
grep
命令也可以使用,但我更喜欢awk:

grep "\t3'UTR" file
Gnl3l   3'UTR
Mecp2   3'UTR
Mecp2   3'UTR

使用
grep

grep -E "^\S+\s+3'UTR$" file

输出:

Gnl3l   3'UTR
Mecp2   3'UTR
Mecp2   3'UTR

如果要在此处使用正则表达式,请使用类似以下内容:

grep "(.*)\t3'UTR$"
这个正则表达式表示开头可以有任何内容(
(.*)
),后面是选项卡(
\t
-您也可以使用所有空格
\s
)和
3'UTR
)。之后,行必须结束(
$

请注意,
(.*)
是不需要的,但是如果您想在grep之外使用regex,您会找到需要它的环境

Gnl3l   3'UTR
Mecp2   3'UTR
Mecp2   3'UTR
grep "(.*)\t3'UTR$"