Ubuntu下移除FASTA文件标题指定内容后字符的求助
解决FASTA标题截断问题
你的问题出在正则表达式的匹配逻辑上——你用了[^|]+来捕获内容,但你的FASTA标题里是用空格分隔ID和后续描述,不是竖线|,所以原命令根本没匹配到正确的分隔点。
试试下面的sed命令:
测试命令(不修改原文件)
sed -E 's/^>([^ ]+).*/>\1/' your_file.fasta
这个命令会:
- 只匹配以
>开头的标题行 - 捕获
>后到第一个空格前的所有内容(也就是你的ID:NC_000002.12) - 把整行替换成
>+捕获到的ID,完全砍掉后续描述
原地修改文件(带备份)
如果测试结果符合预期,想要直接修改原文件,加上-i参数(Ubuntu的sed支持),建议同时加.bak生成备份文件防止误操作:
sed -i.bak -E 's/^>([^ ]+).*/>\1/' *.fasta
执行后会生成xxx.fasta.bak的备份文件,原文件被修改。
如果你想去掉开头的>只保留ID
把命令改成:
sed -E 's/^>([^ ]+).*/\1/' *.fasta
内容的提问来源于stack exchange,提问作者Anchal
相关产品推荐
相关产品推荐

