awk引用外部变量

$ str=hello
$ awk '{print "'$str'"}'

awk的执行原理是,命令中单引号' '引起来防止shell对其进行解释

解释上述命令

首先:这里awk '{print " ' 到这里shell 不会解释

然后:$str shell解释其内容 即为:hello 

最后:' "}'

shell解释完后变成:awk {print " hello  "} file 

再来一个看起来更加难得:

$ str=hello world
$ awk '{print "'"$str"'"}'

为啥又多了一个双引号呢?

如果我们的str为hello world ,在解释前一部分:当shell读到hello和world中间的空格时,认为这是IFS,于是,把他们放在于不同的域中,这样解释成了:

awk BEGIN{print "hello

world"}两部分

避免上述错误,我们需要修改我们的代码: awk '{print "'"$str"'"}'


问题:看不懂下面的代码

学习以上内容后看懂la~~~

为了看懂下面的代码,需要知道怎样引用awk的外部变量

for((i=2;i<=a;i++)); do sed '1,2d' 3_sOTU/table_filtered.xls | awk -F "\t" 'BEGIN{sum=0}{sum+=$"'"$i"'"}END{print sum}'; done | sort -n | head -1

其中这一块有关awk中引用外部变量的方法:引用外部变量$i

 awk -F "\t" 'BEGIN{sum=0}{sum+=$"'"$i"'"}END{print sum}'

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值