使用awk读取ini配置文件

配置文件conf.ini

[server]
ip = 10.10.10.10
name = test_name

下面awk命令的功能为打印出来[server]区域,ip的值

awk -F'=' -v section=[server]  '$0 == section {flag=1;next} $0 ~ /\[/ {flag=0;next}   flag && $1 ~ /^ *ip $/  {print $2}'  /opt/conf.ini

说明如下

awk -F'='  # 指定每行的分隔符为=,分隔符左侧为$1,右侧为$2
-v section=[ip]  #定义变量section,值为[ip]
' # 单引号内为判断逻辑和打印内容
$0 == section {flag=1;next} # $0表示当前行,next表示不再进行后续判断,直接处理下一行,flag置为1表示找到了要处理的区域,==表示值相等
$0 ~ /\[/ {flag=0;next}   # 判断逻辑为,当前行为[开头时,意味着遇到了新的区域,将flag置为0,~表示使用正则表达式
flag && $1 ~ /^ *ip *$/  {print $2} # 判断逻辑为找到了要处理的区域,而且字段名称为ip,打印分隔符右侧的内容
'  
/opt/conf.ini

 awk支持的正则表达式元字符

 

posted @ 2022-09-13 17:56  超级宝宝11  阅读(439)  评论(0)    收藏  举报