【发布时间】:2020-03-04 08:32:02
【问题描述】:
我有一组如下所示的对齐文件:
>X2JE30_DROME/180-423|W6URD5_ECHGR/38-170
.........AEGYPVDLYYLMDLSKSM...E..DDKAK..LST....LG.D......K....L......
>X2JE30_DROME/180-410|X1WIK5_DROME/68-211
......AEGYPVDLYYLMDLSKSM...E..DDKAK..LST....LG.D......K....L.........
>X2dhs0_ECHGR/183-490|X1WIK5_ECHGR/68-211
.......AEGYPVDLYYLMDLSKSM...E..DDKAK..LST....LG.D......K....L........
如何获得以下输出,其中只有在 _ 和 / 之间的两个字符串之间存在匹配时才会打印序列:
期望的输出
>X2JE30_DROME/180-410|X1WIK5_DROME/68-211
......AEGYPVDLYYLMDLSKSM...E..DDKAK..LST....LG.D......K....L.........
>X2dhs0_ECHGR/183-490|X1WIK5_ECHGR/68-211
.......AEGYPVDLYYLMDLSKSM...E..DDKAK..LST....LG.D......K....L........
我已经尝试了以下代码:
awk '
match($0,/_=[A-Z]+/){
val=substr($0,RSTART,RLENGTH)
if(gsub(val,"&")==2){
print
found=1
}
val=""
next
}
found{
found=""
print
}
' test.fasta
代码返回没有值。
【问题讨论】:
-
awk脚本改编自 stackoverflow.com/a/60498903/8133920>。 -
你有 GNU awk 还是 POSIX awk?
-
@Quasímodo 同意