我有一个以下格式的文件(数千行和制表符分隔):
Gnl3l 3'UTR
Smap1 5'UTR||3'UTR
D4Wsu53e CDS||5'UTR||3'UTR
Mecp2 3'UTR
Mecp2 3'UTR我想从第二个选项卡中返回只包含"3'UTR"的所有行。所需输出:
Gnl3l 3'UTR
Mecp2 3'UTR
Mecp2 3'UTR你对grep/regex有什么想法吗?
发布于 2014-08-01 03:13:04
这里最好使用awk,因为使用awk可以轻松地匹配特定字段,而无需使用复杂的正则表达式:
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发布于 2014-08-01 03:16:42
如果您想在这里使用正则表达式,请使用如下代码:
grep "(.*)\t3'UTR$"这个正则表达式表示可以在开头((.*))处放置任何内容,后跟一个制表符(\t -您也可以使用所有空格\s)和3'UTR。之后,该行必须结束($)。
注意,不需要(.*),但是如果您想在grep之外使用正则表达式,您可以找到需要它的环境。
发布于 2014-08-01 03:16:25
使用grep
grep -E "^\S+\s+3'UTR$" file或
grep "^[^\t]\+\t\+3'UTR$" file输出:
Gnl3l 3'UTR
Mecp2 3'UTR
Mecp2 3'UTRhttps://stackoverflow.com/questions/25067052
复制相似问题