如何在文本文件每行前新增独立行插入FASTA格式>符号
实现方案
此前使用sed无法生成独立行的原因是用了行首替换逻辑(比如s/^/>/),只会把>拼接在原有行的开头,不会新增换行。以下两种命令行方案均支持高效处理GB级大型文本,无需全量加载文件到内存,性能优异:
- 方案1:sed 行插入写法(最简洁)
执行如下命令即可输出目标格式:
逻辑说明:sed的sed 'i>' 输入文件.txt > 输出结果.txti为行前插入命令,会在每一行内容前新增独立行写入>,完全匹配格式要求。
适配FASTA场景补充:如果原文件存在空行,不需要为空行前添加>,可以使用过滤写法:
若需要直接修改原文件,可添加sed '/^$/!i>' 输入文件.txt > 输出结果.txt-i参数(操作前务必备份原文件,避免数据丢失):# GNU sed(Linux环境默认) sed -i 'i>' 输入文件.txt # BSD sed(macOS自带环境默认,自动生成.bak后缀的备份文件) sed -i.bak 'i>' 输入文件.txt - 方案2:awk 实现(逻辑直白易理解)
对sed语法不熟悉的话可以用awk写法,执行效果完全一致:
逻辑说明:每读取一行原文件内容,先打印一行awk '{print ">"; print $0}' 输入文件.txt > 输出结果.txt>,再打印当前读取到的原行内容。
效果验证
用提供的示例内容作为输入,执行上述任意命令后,输出结果如下,完全符合预期:
> AAAAAAAAAACA > AAAAAAAAAACTTAT > AAAAAAAAACATGTGACTA > AAAAAAAAACTTATTCTTTTT > AAAAAAAACATGTGACT
内容的提问来源于stack exchange,提问作者Vinod Kumar
相关产品推荐
相关产品推荐

