Bash Shell 读ini配置文件

需求

读取ini配置文件中对应key的value值。

配置文件格式

有section划分不同节,其名称唯一。不同section中key名称可能相同,但同一section中key名称唯一。

[section_1]

key_1=value_1

key_2=value_2

...

[section_2]

key_1=value_1

key_2=value_2

...

...

方法

之前在网上找了不少方法,直接使用source命令,无法解决key重名问题。采用如下awk命令,当一个section中若有key未定义时,会从该section往下找到其它section中的相同key,导致ini文件校验时会有问题。

awk -F '=' '/\['section名'\]/{a=1}a==1&&$1~/'key名'/{print $2;exit}' ini文件名

最后想到可以将两个section之间的参数先抠出来。需要使用grep 的 Perl 正则模式。其中最后一个section需要单独处理一下,所以加了个或“|”。

grep -Pzo "(?s)(\s*)\N*\[section名].*?\[|\[section名\].*" ini文件名

要求两个[section]之间一定不能有其它的“[”符号了。抠出来之后再通过grep和awk进行二次处理,包括去空格啥的,这里就不写了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值