awk -v 引用系统变量的问题

常会遇到,使用awk引用系统变量的问题,由于awk后的参数一般是包含在一对单引号内(例:awk '{print $NF}' filename)

 这就直接导致引号内的变量是不会被解释出来的,而一种简单的方式是使用双引号来代替单引号:

如:

arg=abc

awk "/$arg/{print}" filename

这样$arg就可以正常解释,但这种方法也不是万能的。

lsdate=`date +%F -d "-1 days"` #定义一个日期格式

ls --full |awk "$6>=$lsdate {print $NF}" #列出一天前到现在的文件(这时会报错的)

这里报了一个方法错误,如果把2014-08-14用引号括起来,就没问题了(像这样:ls --full |awk "$6==‘$lsdate’ {print $NF}" ),但括起来后又不能解释变量

幸好awk为此提供了一个-v的参数,可以把外部变量映射为自己的内部变量

ls --full |awk -v var1=${lsdate} '$6>=var1 {print $NF}'

转载于:https://www.cnblogs.com/xuxyblog/p/3914998.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值