从 .csv 更新 .cnf 中的值

问题描述 投票:0回答:1

我有以下.cnf

[ policy_match ]
countryName     = match
stateOrProvinceName = match
organizationName    = match
organizationalUnitName  = optional
commonName      = supplied
emailAddress            =

[ policy_anything ]
countryName     = optional
stateOrProvinceName = optional
localityName        = optional
organizationName    = optional
organizationalUnitName  = optional
commonName      = supplied
emailAddress            =

[client]
countryName     = 
stateOrProvinceName = 
localityName        = 
organizationName    = 
emailAddress            =
commonName      = 

我只需要使用包含 UPN 和 displayName 的 .csv 文件更新 [client] 部分下的 emailAddress 和 commonName 值。

我还需要循环 csv 中的值并更新一个值,这样我就有机会在中间运行另一个脚本来生成证书。

我根本不熟悉 bash 脚本,只是在构建项目时开始学习。

示例:

foreach $upn in $csv {

 update [client].emailAddress = $upn
 run_cert_creation_script_here
}

我正在努力:

sed -i "s/emailAddress.*/emailAddress=$upn/" "$CONFIG_FILE"

但这将更新 cnf 中的所有匹配字段。

bash shell ubuntu scripting sh
1个回答
0
投票

使用这个正则表达式:

sed -i "/^\[client\]/,/^\[/ s/^emailAddress.*/emailAddress=$upn/" "$CONFIG_FILE"

第一部分搜索 [client] 和下一部分(以 [ 开头)之间的文件部分,然后在该部分中搜索字符串 emailAddress 并替换它。

© www.soinside.com 2019 - 2024. All rights reserved.