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

如何用Shell命令从外部文件替换Properties中指定Key的取值?

用Shell命令替换Properties文件指定字段的值

需求说明

将原Properties文件中cim.ldap.key字段的取值,替换为外部文件(File 2)中该字段对应的新值。

方法一:sed + 变量提取(直观易读)

先从外部文件提取目标字段的新值,再用sed替换原文件内容:

# 从File 2中提取cim.ldap.key的新值
new_ldap_key=$(grep '^cim.ldap.key=' file2.properties | cut -d'=' -f2-)

# 替换原文件的对应字段(Linux系统用-i,macOS需用-i '')
sed -i "s/^cim.ldap.key=.*/cim.ldap.key=$new_ldap_key/" original.properties
  • grep '^cim.ldap.key='精准匹配外部文件中以该字段开头的行
  • cut -d'=' -f2-以=为分隔符,提取等号后的全部内容(兼容值中包含等号的场景)
  • sed命令用新值直接覆盖原文件中匹配到的字段行

方法二:awk一次性处理(无需中间变量)

用awk同时读取外部文件和原文件,一步完成替换:

awk -F'=' 'NR==FNR{if($1=="cim.ldap.key") new_val=$2; next} $1=="cim.ldap.key"{$2=new_val} 1' file2.properties original.properties > temp.properties && mv temp.properties original.properties
  • NR==FNR:优先处理第一个输入文件(file2.properties),提取目标字段的值存入new_val
  • 处理原文件时,匹配到目标字段就替换其值,1表示打印所有行
  • 先输出到临时文件再覆盖原文件,避免直接修改时的文件损坏风险

注意事项

  • 假设字段行格式为key=value,无前后空格;如果存在空格,可调整匹配规则为^[[:space:]]*cim.ldap.key[[:space:]]*=
  • macOS系统的sed命令需添加空参数:sed -i '' "s/..."

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 12:07:42