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

如何用sed或Perl为金额与相邻单词间添加空格?

解决金额与后续单词间添加空格的问题

sed 解决方案

使用扩展正则表达式的sed命令即可实现需求:

sed -E 's/([0-9]+\.[0-9])([A-Za-z])/\1 \2/g' /tmp/testfile2.txt

如果是GNU sed环境,也可以用-r参数替代-E:

sed -r 's/([0-9]+\.[0-9])([A-Za-z])/\1 \2/g' /tmp/testfile2.txt

正则逻辑说明

  • ([0-9]+\.[0-9]):精准匹配金额部分(如2234.3),其中[0-9]+匹配整数位的多个数字,\.匹配小数点,[0-9]匹配小数点后的一位数字
  • ([A-Za-z]):匹配紧跟金额后的第一个字母
  • 替换为\1 \2,即在金额与首字母之间插入空格

原命令问题分析

你之前的命令无法生效的原因:

  1. 正则分组错误拆分了小数点,且.*贪婪匹配会导致匹配范围超出预期
  2. 命令末尾多余的空格,与原文本中金额和单词无空格的实际情况不符,导致无法命中目标内容
  3. 未准确限定金额与单词的分界规则

Perl 解决方案

用Perl命令也能简洁实现:

perl -pe 's/(\d+\.\d)([A-Za-z])/$1 $2/g' /tmp/testfile2.txt

这里\d等价于[0-9],正则逻辑与sed方案一致,写法更简洁。

测试效果

输入文本:

2234.3Hello
8938.3HeyYou
1239.0New

执行命令后输出:

2234.3 Hello
8938.3 HeyYou
1239.0 New

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 09:59:56