awk引用外部变量

这篇博客探讨了在awk命令中如何引用和处理shell的外部变量,特别是涉及空格和特殊字符时的解析问题。通过示例解释了如何使用awk处理包含空格的字符串,并展示了如何避免IFS导致的错误。文章还介绍了在for循环中调用awk并引用外部变量$i的正确方式,强调了在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}'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值