一、awk基础
-F #指定分割符
print #打印
$0 #表示整个当前行
$1 #每行第一个字段 (ini分隔符前的key)
$2 #每行第二个字段 (ini分隔符前的value)
-v #设置变量
// #匹配代码块
'' #引用代码块
二、读取ini
1. net.ini文件
[NETWORK]
ip=10.1.0.11
mask=255.255.255.0
[NETWORK_WIFI]
ip=168.192.1.1
mask=255.255.255.0
2. 打印
- 全打印
awk -F"=" '{print $0}' net.ini
- 键打印
awk -F"=" '{print $1}' net.ini
[NETWORK]
ip
mask
[NETWORK_WIFI]
ip
mask
- 值打印
awk -F"=" '{print $2}' net.ini
10.1.0.11
255.255.255.0
168.192.1.1
255.255.255.0
三、读取特定Section的Key的值
1. 设置特定值
awk -F'=' -v section="[NETWORK]" -v k="ip" '{print $2}' net.ini
2. 查找匹配项
说明版本:
awk
-F'=' #分隔符
-v section="[NETWORK]" #设置section变量
-v key="ip" #设置key变量
'
$0==section { flag=1; next }\ #flag=1 找到匹配的Section
/\[/ { flag=0; next }\ #有[开头的表示是另一个Section,设置flag=0
flag && $1==key { print $2 } \ #打印key的值
'
net.ini
运行版本:
awk -F'=' -v section="[NETWORK]" -v key="ip" '
$0==section { flag=1; next }
/\[/ { flag=0; next }
flag && $1==key { print $0 }
' net.ini
四、总结
利用awk处理文本,可以在shell脚本中获取配置来达到动态命令参数的目的。