我有一个fasta file_imagine作为txt文件,其中偶数行是字符序列,奇数行是序列id's_。我想在序列中搜索字符串,并获取匹配子字符串及其ID的位置。示例:输入:
>111
AACCTTGG
>222
CTTCCAACC
>333
AATCG
搜索“ CC”。输出:
3 111
4 8 222
$ awk -F'CC' 'NR%2==1{id=substr($0,2);next} NF>1{x=1+length($1); b=x; for (i=2;i<NF;i++){x+=length(FS $i); b=b " " x}; print b,id}' file
3 111
4 8 222
解释:
-F'CC'
awk将输入行分成多个字段。CC
在此示例中,我们指示它使用感兴趣的序列作为字段分隔符。
NR%2==1{id=substr($0,2);next}
在奇数行上,我们将id保存到variable id
。假设第一个字符为>
,而id为后跟。捕获了ID之后,我们指示awk跳过其余命令,并从该next
行重新开始。
NF>1{x=1+length($1); b=x; for (i=2;i<NF;i++){x+=length(FS $i); b=b " " x}; print b,id}
如果awk在输入行上仅找到一个字段NF==1
,则表示没有找到字段分隔符,我们将忽略这些行。
对于其余的行,我们计算每个匹配项的位置,x
然后将find的每个值保存x
在string中b
。
最后,我们打印匹配位置b
和id
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句