如何使用sed删除行首尾的“-”字符并保留行中间的“-”字符
使用sed删除文本行首尾的
-字符 现有情况
待处理文本:
>seq1 --A--CGT-A-- >seq2 -GA-T-A-CC--
处理目标:删除所有行开头和末尾的-,仅保留字母之间的-,期望输出:
>seq1 A--CGT-A >seq2 GA-T-A-CC
当前使用的命令仅能删除行首的-:
sed 's/^\(-\)*//'
正确命令
直接在原有替换规则后追加删除行尾-的规则即可,完整命令:
sed 's/^-*//;s/-*$//' 你的文件路径
规则解释
s/^-*//:匹配行首连续的任意个-,替换为空,即删除行首横杠,和你原有逻辑一致s/-*$//:匹配行尾连续的任意个-,替换为空,即删除行尾横杠- 两条规则用分号分隔,sed会逐行按顺序执行两次替换
- 以
>开头的序列标题行首尾没有横杠,执行替换时不会被修改,不会破坏原有格式
如果需要直接把修改写入原文件,加-i参数即可:
sed -i 's/^-*//;s/-*$//' 你的文件路径
内容的提问来源于stack exchange,提问作者Honorato
相关产品推荐
相关产品推荐

