http://blog.sina.com.cn/s/blog_63092e670100r4th.html
1. '' 单引号截断,注意:如果变量的值有空格的话,必须要加双引号""(参见上面的链接),否则空格会导致 cmd空格option空格params
2.ENVRION["varName"]
3.-v传递参数
GOOD:
http://www.cnblogs.com/chengmo/archive/2010/10/03/1841753.html
1. 格式如:awk ‘{action}’ 变量名=变量值 ,这样传入变量可以在action中获得值,但不能在BEGIN{}中引用
var1="hahah"
echo |awk 'BEGIN{print "Begin:v1="v1} {print "ActionBody:v1="v1}' v1="$var1"
输出结果
Begin:v1=
ActionBody:v1=hahaha
2.格式如:awk –v 变量名=变量值 [–v 变量2=值2 …] 'BEGIN{action}’ 注意:用-v 传入变量可以在3种类型的action 中都可以获得到,但顺序必须要在 action前面。
echo |awk -v v1="haha" 'BEGIN{print "Begin:v1="v1} {print "ActionBody:v1="v1}'
格式如:awk ‘{action}’ 变量名=变量值 ,这样传入变量,可以在action中获得值。 注意:变量名与值放到’{action}’后面。
[chengmo@localhost ~]$ echo | awk 'BEGIN{print test}' test="$test"
这种变量在:BEGIN的action不能获得。
awk -f "query.awk" idnums=10 test.dat
必须要在文件名前面
格式如:awk –v 变量名=变量值 [–v 变量2=值2 …] 'BEGIN{action}’
注意:用-v 传入变量可以在3中类型的action 中都可以获得到,但顺序在 action前面。
awk -v idnums=10 -f "query.awk" test.dat
1.单引号 双引号的区别
var1="hello"
awk 'script' => 会把awk scrpit 原封不动的传递给AWK解释器
awk '{print $var1}' =>ERROR, $var1是shell变量,无法直接引用
awk "script" => 先把awk script解析成 String 形式的 脚本(包括引用shell变量), 再传递给AWK解释器
awk "{print $var1}" =>OK, 先把$var1是替换成shell变量的值,解析的结果"print hello" 再传递给AWK解释器
awk '{print $SHELL-VAR}' SHELL-VAR的值来自shell变量
测试如下:
>index=2
>echo $index ##输出是2
>echo "a b c d" | awk {'print $index'} ERROR
var是shell变量,而awk是Linux中独立于shell的一个工具。在awk中如果要解析shell变量,需要将变量拿到awk的作用域外面来,即,先关闭awk的单引号,引用变量 后再次打开。 摘自 http://zhidao.baidu.com/question/273992965.html |
>echo "a b c d" | awk {'print $'$index'}'