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

求助:如何用sed实现行尾为=时将下一行追加到当前行?

解决sed合并以=结尾行的问题

嘿,我来帮你修复这个sed命令的问题!你之前的命令失效,核心原因是正则匹配写错了——你用的/\$/是匹配以$符号结尾的行,而不是以=结尾的行,这就导致sed根本找不到你要处理的目标行。

正确的sed命令

直接把匹配规则改成/=$/($是行尾锚点,=$就表示行的最后一个字符是=),完整命令如下:

sed -e :a -e '/=$/N; s/=\n//; ta'

命令各部分解释

  • :a:定义一个名为a的标签,用来实现循环处理
  • /=$/N:匹配所有以=结尾的行,然后用N命令把下一行追加到当前模式空间(两行合并成一个模式空间,中间用换行符分隔)
  • s/=\n//:把模式空间里的=+换行符替换为空,完成两行的合并操作
  • ta:如果之前的替换操作成功(也就是确实合并了行),就跳转到标签a继续循环——这一步是为了处理连续多行以=结尾的情况(比如行1=,行2=,行3,会把三行直接合并成一行)

示例演示

假设你的输入文件test.txt内容是:

apple=
banana
orange=
grape=
pear

执行命令sed -e :a -e '/=$/N; s/=\n//; ta' test.txt后,输出会是:

applebanana
orangegrapepear

简化版(仅合并一次)

如果你的场景里不会出现连续多行以=结尾的情况,也可以去掉循环逻辑,用更简洁的命令:

sed '/=$/{N; s/=\n//}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:45:16