shell往awk传参数

shell往awk传参数

今天在搞脚本,需求是这样的,有一个文件格式大概是这样的:

    180 'xxxanalyzer'

      20 'xxxjob'

     1 'xxxxxx'

需要按第一列的数值读取这个文件,比如第一行大于等于20的显示出来,刚开始用的脚本是这样的:

demo.sh

#!/bin/bash

threadHold=$1

awk '{if ($1 >= $threadHold) {print $2 " was restarted " $1 " times,"}}' ~/tmp/159.122.224.157_temp

这样调了一下:./demo.sh 5

执行结果:

  180 'xxxanalyzer'

      20 'xxxjob'

     1 'xxxxxx'

第三行也出来了,不科学呀,第三行第一列可是1呀,1大于等于5???angry

百思不解呀,后来把变量threadHold去掉,直接写成5,正常了,正常了,正常了,我去,这是啥意思,后来一琢磨,原来不能直接在awk里使用shell的变量,需要使用的话需要通过-v传给awk:

#!/bin/bash

threadHold=$1

awk -v threadHold=$threadHold '{if ($1 >= threadHold) {print $2 " was restarted " $1 " times,"}}' ~/tmp/159.122.224.157_temp

结果就正常了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值