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

如何用Sed脚本移除断字标记(=)并合并拆分的文本行?

解决行尾断字标记=的文本合并问题

哈哈,我懂你这种踩坑的感觉!你之前用的sed 's/=$//g'命令只去掉了行尾的=,但换行符还留在那儿,自然没法把两行真正合并起来。别着急,我给你几个靠谱的解决方案:

方法一:用Sed实现合并

这个Sed命令会自动把所有以=结尾的行和下一行合并,同时移除那个断行的=:

sed -e :a -e '/=$/N; s/=\n//; ta' old-file > new-file

我给你拆解一下每个部分的作用:

  • :a:定义一个名为a的标签,用来循环处理连续的断行
  • /=$/N:匹配行尾是=的行,把下一行追加到当前行(两行之间用换行符\n分隔)
  • s/=\n//:把行尾的=和后面的换行符一起替换为空,完成合并
  • ta:如果刚才的替换操作成功了,就跳转到标签a,继续处理可能存在的连续断行(比如多行都以=结尾的情况)

举个例子,你的原文件内容:

I wonder who came up with the phrase A qu=
ick brown fox jumps over the lazy dog.

运行命令后,新文件就会变成:

I wonder who came up with the phrase A quick brown fox jumps over the lazy dog.

方法二:用Awk实现合并

如果你更习惯用Awk,这个命令也能达到同样的效果:

awk '/=$/{sub(/=$/,""); getline line; print $0 line; next}1' old-file > new-file

解释一下逻辑:

  • /=$/:匹配以=结尾的行
  • sub(/=$/,""):移除当前行末尾的=
  • getline line:读取下一行内容到变量line里
  • print $0 line:把当前行和下一行内容拼接后打印
  • next:跳过后续的默认处理,直接进入下一行循环
  • 1:对于不匹配/=$/的行,直接默认打印(Awk里1代表真,会执行默认的print $0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 20:17:56