LDD3 中 awk 语句的解释



ldd3的一个创建节点的shell脚本中,用到了awk文本处理工具,在这里做一下解释。

   原句:major=$(awk "\\$2==\"$module\" {print \\$1}"/proc/devices)

 

       Module变量在脚本中定义为 scull.

       /proc/devicesawk要处理的输入文件。

       $2,$1,分别代表输入文件中的每条记录的第二个域和第一个域,域之间的分隔符默认是空格。

 

式中的那几个斜杠是什么意思?

    在awk中,\是转义字符,就是让其后面的元字符显示本意(而不是shell赋予它们的意义)。这样,\\$2就变成了\$2\",就是"

 

为什么是\$2

shell中,$后面跟变量,如果直接是$2,就代表调用shell脚本时传入的第二个参数,而不是上面我们谈到的含义,这就是要加 \ 的原因,它要求$2原封不动传给awk,不然就被shell替换为输入参数了。

 

这句话的意思是从输入文件/proc/devices检查记录,若第二个域是scull,则打印记录的第一个域,也就是设备的主设备号,并将这个值赋给了major

 

awk的执行动作的部分是放在单引号内的,但是上面的语句是将动作放在双引号内,什么原因?

这是因为命令已经传给awk了,引号已经没了。 shell里面这个引号是为了阻止print{}里的内容作为shell的命令块处理

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值