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

如何使用Shell SED等工具按小写接大写规则拆分文本行

问题根因

你之前的sed命令错误点在于:捕获组把「小写字母+紧跟的大写字母」两个字符作为整体匹配,替换时将这两个字符整体放到换行符之后,导致拆分点前的小写字母被错误带到下一行开头,最终把单词拆碎,出现Someothe/rString这类不符合预期的输出。

正确实现命令

GNU sed(绝大多数Linux发行版默认sed版本)

直接执行以下命令即可得到预期结果:

sed 's/\([a-z]\)\([A-Z]\)/\1\n\2/g' <<< "String, SomeotherString Additional, StringNew String"

正则逻辑说明:

  • 将匹配规则拆为两个独立捕获组:第一个捕获组匹配拆分点前的小写字母,第二个捕获组匹配拆分点后的大写字母
  • 替换时完整保留两个捕获组的原有内容,仅在两组中间插入换行符,不会丢失、错位任何原文本字符

执行输出和需求完全匹配:

String, Someother
String Additional, String
New String

BSD sed(macOS系统默认自带sed版本)

BSD sed对换行符的转义规则和GNU sed有区别,需要使用以下命令:

sed 's/\([a-z]\)\([A-Z]\)/\1\'$'\n''\2/g' <<< "String, SomeotherString Additional, StringNew String"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:18:21