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

如何使用SED合并末尾-前无空白字符的相邻行?

修正SED脚本:仅合并行尾“-”前无空白的行与下一行

原脚本的问题在于匹配了所有以“-”结尾的行,包括“-”前带有空白字符的情况,导致错误合并了line5 -和 line6。只需修改正则匹配条件,即可实现需求。

修正后的脚本

#!/bin/bash
file=$1
sed ':a;/[^ \t]-$/{N;s/-
//;ba}' "$file"

关键修改说明

  • 将原匹配条件/-$/替换为/[^ \t]-$/:
    • [^ \t]是正则否定字符集,匹配除空格、制表符之外的任意字符,确保只有当行尾的“-”紧邻非空白字符时,才触发合并逻辑。
  • 其余逻辑保持不变:
    • :a定义循环标签;N读取下一行并入当前模式空间;s/- //删除行尾的“-”和换行符;ba回到标签a,循环检查合并后的新行尾。

验证效果

输入内容

line1- 
line2

line3-
line4

line5 -
 line6

执行修正脚本后的输出

line1- 
line2

line3line4

line5 -
 line6

完全符合期望结果,仅合并了line3-与line4,而保留了line5 -和 line6的分行状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:10:29