使用AWK将另一文件的匹配字符串追加到FASTA序列头部ID
解决FASTA序列头部追加描述信息的问题
可以用以下awk命令实现需求:
awk 'NR==FNR {sub(/^>/,""); split($0,a,/[[:space:]]+/); desc[a[1]] = substr($0, length(a[1])+2); next} /^>/ {if ($0 in desc) print $0, desc[substr($0,2)]; else print; next} 1' File_2 File_1
命令逻辑说明
- 先处理
File_2(NR==FNR阶段):- 移除行首的
>符号 - 以空格为分隔符拆分行内容,提取ID和对应描述文本
- 将ID作为数组键、描述作为对应值存入数组
desc
- 移除行首的
- 再处理
File_1:- 遇到以
>开头的头部行时,提取ID(去掉行首>),检查是否存在于desc数组中- 存在则输出原头部内容+匹配到的描述
- 不存在则直接输出原头部
- 非头部的序列行直接原样输出
- 遇到以
示例验证
File_1 内容:
>id1 agcataattaat >id2 gccatataatgg >id3 gccaaattaggg >id4 ataatttagccc
File_2 内容:
>id2 descriptionXYZ >id4 description3E4
执行命令后输出结果:
>id1 agcataattaat >id2 descriptionXYZ gccatataatgg >id3 gccaaattaggg >id4 description3E4 ataatttagccc
内容的提问来源于stack exchange,提问作者timtimbruno
相关产品推荐
相关产品推荐

