【发布时间】:2016-09-09 21:52:03
【问题描述】:
我正在尝试打印出$1 是intronic|UTR3|UTR5 和$2 与特定模式[^*+-]+[*+-] 匹配的所有行。我认为下面的awk 很接近,但我的current output 是1 的一列。我可以删除这些行,但似乎不能打印它们。输入文件是制表符分隔的。谢谢你:)。
强文本
Func.refGene Mutation Call Mutant Allele Frequency
1 intronic c.[434-90G>C]+[=] 52.93
1 intronic c.[433+79A>G]+[433+79A>G] 100
1 intronic c.[1017+56G>A]+[1017+56G>A] 100
1 exonic c.[1119G>A]+[=] 100
5 UTR3 c.[*68A>G]+[=] 51.46
awk
awk -F'\t' '
$1 ~ "^(intronic|UTR3|UTR5)$" {
v=$2
sub(/^[^*+-]+[*+-]/,"",v)
if(v + 0 > 10)
print sub(/^[^*+-]+[*+-]/,"",v)
}1' file
电流输出
1
1
1
1
1
期望的输出
1 intronic c.[434-90G>C]+[=] 52.93
1 intronic c.[433+79A>G]+[433+79A>G] 100
1 intronic c.[1017+56G>A]+[1017+56G>A] 100
5 UTR3 c.[*68A>G]+[=] 51.46
【问题讨论】:
-
您似乎只说要匹配 intronic|UTR3|UTR5。您所需的输出将 exonic 显示为成功匹配。你想匹配外显子吗?
-
我很抱歉@blackpen 这些是我想要输出的,我更正了帖子输出。谢谢你:)。
-
脚本和输入不会产生所示的输出。同样
sub返回替换的数量,而不是处理后的字符串。 -
我怀疑你的正则表达式
^[^*+-]+[*+-]没有按照你的想法做,因为你输入的每一行都会匹配那个正则表达式。如果您告诉我们您要做什么以及不匹配的行(如果缺少该行,请将该行添加到您的示例输入中),那么我们可以帮助您编写它。
标签: awk