awk中使用shell变量的问题
awk吧
全部回复
仅看楼主
level 1
awk中需要使用shell中的变量来进行判断,但是使用-v 进行传递的时候,发现根本不起作用
#!/bin/bash
i=22
echo hello world | awk -v k="$i" '{if(k>100)\{print $1}else{print $2}}'
不管怎么改变i的值得到的总是hello;
而且如果
i=22
awk -v k="$i" 'BEGIN{print k}'
就可以打印出i的值,去掉BEGIN就会出现错误,无法打印,这是什么原因呢?哪里弄错了啊?求教
2013年06月10日 04点06分 1
level 10
#!/bin/bash
i=22
echo hello world | awk -v k="$i" '{if(k>100){print $1}else{print $2}print "----"k"----"}'
然后打出:[xxxx@spaces ~]$ ./t.sh
world
----22----
这个没有问题的,当然可能与服务器版本有关系,我这是center OS 5.4的linux版本,当然前面那个最好是 echo "hello world" 加上引号,不然在不同的版本下会有所区别
2013年06月13日 01点06分 2
level 6
楼主是不是多打了一个反斜杠"\" 在if条件后面
2013年06月13日 15点06分 3
level 11
因为没有输入文件啊,BEGIN的话是直接输出结果的,你的echo的文件没输入给awk
2013年08月02日 01点08分 4
level 1
#!/bin/bash
i=22
echo hello world | awk -v k=$i '{
if(k > 100){
print $1
}else{
print $2
}
}'
2015年10月31日 13点10分 5
1