谁能帮忙逐段解释下这个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` 展开
 我来答
悄逝的流年
2018-01-03 · TA获得超过168个赞
知道小有建树答主
回答量:179
采纳率:20%
帮助的人:40.7万
展开全部
-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的行,
               打印第二数据字段,然后退出。
良玉小帝
2018-01-03 · 个人日常精心汇总合集
良玉小帝
采纳数:5925 获赞数:9451

向TA提问 私信TA
展开全部
从文件$Configfile获取第一个$Section的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式