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

如何用Shell命令为属性键中被点包围的数字添加双引号?

问题:为属性键中的独立数字节点添加双引号

原始属性配置:

connection.party= 0.0.0.0
remote.app.328.port= 5432
remote.server.url="https://someurl.com?q=78.78"
remote.conncetion.7="basic"
remote.52.base= "local"
level1.34access23="true"
88.location.code=24
location.234.code.52=24 

期望转换结果:

connection.party= 0.0.0.0
remote.app."328".port= 5432
remote.server.url="https://someurl.com?q=78.78"
remote.conncetion."7"="basic"
remote."52".base= "local"
level1.34access23="true"
"88".location.code=24
location."234".code."52"=24

要求说明:

  • 仅为属性键中前后被点包裹、位于键开头或结尾的独立数字添加双引号
  • 与文本相连的数字(如328access23)保持不变
  • 属性值部分(等号右侧内容)完全不修改

之前尝试的sed命令(会错误给所有数字加引号,不符合需求):

sed -E 's/^([^=]+)\.([0-9]+)/\1."\2"/' input.properties 

解决方案

可以使用多规则匹配替换的sed命令,精准定位需要加引号的独立数字节点:

sed -E '
    s/^([0-9]+)\./"\1"./;
    s/\.\([0-9]+\)\./."\1"./g;
    s/\.\([0-9]+\)=$/\."\1"=/
' input.properties

命令拆解:

  1. s/^([0-9]+)\./"\1"./:匹配键开头的独立数字(比如88.location里的88),替换成"88".
  2. s/\.\([0-9]+\)\./."\1"./g:全局匹配被两个点夹着的独立数字(比如app.328.port里的328、location.234.code.52里的234),替换成."328".
  3. s/\.\([0-9]+\)=$/\."\1"=/:匹配键末尾的独立数字(比如conncetion.7=里的7、code.52=里的52),替换成."7"=

这个命令会自动跳过和文本连在一起的数字,同时完全保留等号右侧的属性值,完全符合你的要求。


内容的提问来源于stack exchange,提问作者Débora

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:33:31