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

如何使用sed替换行尾/并在该行及下一行行首添加-

处理行尾斜杠并添加行首标记的解决方案

需求回顾

要完成两个核心操作:

  1. 移除行尾的/字符
  2. 在原行尾带/的行,以及它的下一行的行首添加-

正确的Sed命令

直接执行这条命令就能实现预期效果:

sed -E 'N; s/(.*)\/\n(.*)/- \1\n- \2/; P; D' input

命令拆解说明

  • N:将下一行内容读入模式空间,把当前行和下一行合并成一个整体处理,方便成对修改
  • s/(.*)\/\n(.*)/- \1\n- \2/:
    • 精准匹配「行内容+/+换行+下一行内容」的结构
    • 捕获/前面的所有内容(\1)和下一行的完整内容(\2)
    • 替换后自动移除原行的/,同时给两行分别加上- 前缀
  • P:打印模式空间里的第一行处理结果
  • D:删除模式空间里的第一行,把剩余内容留到下一轮循环,保证后续行正常遍历处理

你之前尝试的问题分析

  1. 第一个命令:sed -E 'N;s/^(- )?(.*\n)\//- \2-/;P;D'
    替换逻辑错误,仅把下一行开头的/换成-,既没移除原行的/,也没给原行正确添加行首标记
  2. 第二个命令:sed 'N; \#\n/# { s//\n-/; s/^/- / }; P;D'
    未处理原行的/,只是替换了下一行的/,修改不完整
  3. 第三个命令:sed -E 'N;s|([^\n]*\n)/|- \1-|;P;D'
    保留了原行的/,且下一行仅把/换成-,没有添加完整的- 前缀
  4. 第四个命令:sed -Ez 's|([^\n]*\n)/|- \1-|g'
    -z会把整个文件当作单行处理,替换逻辑没覆盖原行的行首标记添加,还容易误处理其他场景

效果验证

用你的输入测试后,执行命令会得到完全符合预期的输出:

00:00:00,000 --> 00:00:00,000
<b><font color="#ffffff">Lorem Ipsum</font></b>

2
00:00:00,000 --> 00:00:00,000
- Lorem ipsum dolor sit
- amet, consectetur adipiscing elit.

3
00:00:00,000 --> 00:00:00,000
Ut sed gravida nisi.

4
00:00:00,000 --> 00:00:00,000
- Nunc sit amet ultrices urna,
- non efficitur neque. 

5
00:00:00,000 --> 00:00:00,000
<b><font color="#ffffff">Cras aliquam tristique dui, viverra laoreet diam hendrerit ac.</font></b>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 20:23:21