如何使用sed命令移除pep文件前5000行的*并输出为新fasta文件
解决方案
你可以直接使用sed单命令完成需求,不需要额外配合管道拆分文件,命令如下:
sed '1,5000s/\*//g' Jimbleprot.pep > newprot.fasta
命令解释
1,5000:指定sed的操作范围为文件的第1到第5000行,5001行及之后的内容不会做任何修改,直接原样输出s/\*//g:替换规则,\*是转义后的*字符(*在正则中属于特殊字符必须转义),g表示全局替换,即删除每行中所有的*字符> newprot.fasta:将处理后的所有内容重定向写入到新文件newprot.fasta中
如果你确实想要用管道结合head、tail的方式实现,也可以用下面的命令:
(head -n 5000 Jimbleprot.pep | sed 's/\*//g'; tail -n +5001 Jimbleprot.pep) > newprot.fasta
该命令逻辑说明
- 括号内的两个命令会按顺序执行,输出合并到一起
- 前半部分提取前5000行,通过sed删除所有
*后输出 - 后半部分提取第5001行到文件末尾的所有内容,直接原样输出
- 最终合并后的结果写入到
newprot.fasta
注意事项
- 运行前可以先执行
wc -l Jimbleprot.pep确认文件行数确实大于5000,避免tail部分无内容输出 - 操作不会修改原文件
Jimbleprot.pep,所有改动仅生效于新生成的文件
内容的提问来源于stack exchange,提问作者Yuri Rolimus
相关产品推荐
相关产品推荐

