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$"