您的位置:首页 > 运维架构 > Shell

awk中使用shell变量的两种方法

2008-10-07 15:32 771 查看
假定我们要求一列数值数据的中值,数据存放在data.txt文件中,如果直接如下使用:
data_num=`cat data.txt |wc -l`
median_cnt=`expr $data_num / 2`
export median_cnt
median_value=`sort -g data.txt |awk '{if (NR == $median_cnt ) print }'`
将不能得到中值,因为awk不认识$median_cnt的SHELL变量。
有两种方法解决以上问题:
(1)使用awk的-v参数
awk的-v参数可以定义变量,这样可以将SHELL变量传进awk中:
median_value=`sort -g data.txt |awk -v median=$median_cnt {if (NR == median) print}`
这样就可以了。
(2)使用ENVIRON获取环境变量
median_value=`sort -g data.txt |awk if (NR == ENVIRON["median_cnt"]) print}`
这样也可以。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: