谁能帮忙逐段解释下这个awk语句什么意思
`awk-F'=''/\['$Section'\]/{a=1}a==1&&$1~/'$Key'/{print$2;exit}'$Configfile`...
`awk -F '=' '/\['$Section'\]/{a=1}a==1&&$1~/'$Key'/{print $2;exit}' $Configfile`
展开
2个回答
展开全部
-F:
更改字段分隔符为 =
/\['$Section'\]/ :
首先使用/正则表达式/ 是匹配模式,表示只有这一行的字符与//内的正则表达式匹配了,
才会去执行//匹配模式后面的{}内的操作。
此处//内的内容是\['$Section'\],而因为[]符号是元字符(在正在表达式内有特殊含义,
不仅仅是[]的字符字面意思),所以使用\来转义。最后含义就是匹配字符串['$Section']
进一步分解'$Section'其实就是当前shell环境变量Setion的值,为什么要加'' ??
大概是因为shell与awk交互的一系列原因,具体的我也不是很了解。
{a=1}:
自定义变量a赋值为1
前面两个合起来就是 如果匹配到字符串['$Section']变量a的值就是1
a==1 :
条件表达式,值为真或假
&& :
逻辑且
$1~/'$Key'/:
$1是内置变量,表示使用=为分割符分割后的第一个数据字段
此处的'$Key'与上面的'$Section'相同。
~:
匹配操作符,允许将正则表达式限定在数据行中的特定数据字段。也就是后面的匹配模式
只对$1(=分隔符分割后的第一个数据字段)进行匹配。
{print $2; exit} 打印由=分割符分割后的第二个数据字段,然后结束当前行的awk流处理。
也就是如果匹配的所有条件就结束awk,不继续去处理后面的行。
整个命令作用:在$Configfile文件中匹配到以=为分隔符的第一数据字段为当前shell环境
变量值为$Key 且 当前行中含有数据字段为当前环境变量值为$Section的行,
打印第二数据字段,然后退出。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询