如何用awk为文件中>开头的序列行添加对应seqnum前缀?
使用awk批量处理序列文件添加seqnum前缀
直接用以下awk命令即可实现需求:
awk '/^# Sequence Data:/ { match($0, /seqnum=([0-9]+)/, arr) seqnum = arr[1] } /^>/ { print substr($0, 1, 1) seqnum "-" substr($0, 2) } !/^#|^>/ { print }' input.txt > output.txt
命令说明
- 捕获seqnum值:当遇到以
# Sequence Data:开头的行时,通过正则匹配提取seqnum=后的数字,存入变量seqnum中,后续的>行都会使用这个值作为前缀。 - 处理目标行:对以
>开头的行,将其拆分为>符号和后续内容两部分,在中间插入seqnum-后重新拼接输出。 - 保留其他行:非注释、非目标行的内容直接原样输出,确保文件其他结构不受影响。
将上述命令中的input.txt替换为你的实际文件名,运行后处理结果会保存到output.txt中,完全符合你需要的格式。
内容的提问来源于stack exchange,提问作者plnnvkv
相关产品推荐
相关产品推荐

