You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用sed删除包含'-'的行及其前一行?

用sed删除含'-'的行及其前一行的正确方法

你之前用的sed -e '/-/-1d'语法错误,sed不支持这种直接引用匹配行前一行的写法,得靠模式空间的缓存机制来处理这种成对的标题+序列行。

正确命令

sed -n 'N; /-/{d}; P; D' your_file

逐部分解释

  • -n:关闭sed默认的自动输出,我们自己控制哪些行要打印
  • N:把下一行拉进当前模式空间,此时模式空间里是两行(标题行+对应的序列行)
  • /−/{d}:如果这两行里包含-,直接删掉这一对,不输出
  • P:打印模式空间里的第一行(没问题的标题行)
  • D:删掉模式空间里的第一行,剩下的序列行留在里面,下一轮循环时N会拉新的标题行进来,继续处理下一对

验证结果

输入文件:

>seq 1
GAA--ACGAA
>seq 2
CATCTCGGGA
>seq 3
GACG-CG-AG
>seq 4
ATTCCGTGCC

执行命令后输出:

>seq 2
CATCTCGGGA
>seq 4
ATTCCGTGCC

完美匹配你要的结果。

内容的提问来源于stack exchange,提问作者Honorato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 21:57:42