【版权声明:转载请保留出处:blog.csdn.net/gentleliu。Mail:shallnew at 163 dot com】
由于awk经常在shell脚本中使用,所以shell脚本中的有些变量要传递到awk中使用,这一节就说一下awk引用shell中的变量方法。
为避免屏幕输出太多东西,我们先将被操作文件该为一行,如下:
# catgroup_file3
vboxusers:x:984:allen
1、 文件名之前传递变量。
格式如下:awk ‘{print var1, var2}‘ var1=aaa var2=bbb filename
#!/bin/sh
shell_var="test"
awk '{printvar}' var=$shell_var group_file3输出结果为:#./61_awk_var.sh test这里变量赋值要放在文件名之前,否则变量值会取不到。比如如果脚本这样写不会输出变量值。
#!/bin/sh
shell_var="test"
awk '{print var}'group_file3 var=$shell_var其实这种方法在BEGIN中无法使用变量,比如这样写脚本:#!/bin/sh
shell_var="test"
awk '
BEGIN{
print "begin output var:" var
}
{
print var
}
END{
print "end output var:" var
} 'var=$shell_var group_file3输出结果为:#./64_awk_var.sh begin outputvar: test end outputvar:test2、 使用-v传递变量。
#!/bin/sh
shell_var="test"
awk -vvar=$shell_var '{print var}' group_file3再试试该值在BEGIN中是否可以使用:#!/bin/sh
shell_var="test"
awk -vvar=$shell_var '
BEGIN{
print"begin output var:" var
}
{
print var
}
END{
print "end output var:" var
} ' group_file3#./63_awk_var.sh begin outputvar:test test end outputvar:test这种方法传递的变量在BEGIN可以使用。
#!/bin/sh
var="test"
awk '
BEGIN{
print "begin outputvar:" "'$var'"
}
{
print "'$var'"
}
END{
print "end outputvar:" "'$var'"
} ' group_file3执行结果:# ./65_awk_var.sh begin output var:test test end output var:test变量传递不但可以传递自定义变量,还可以传递环境变量,用法同自定义变量类似。。
原文地址:http://blog.csdn.net/shallnet/article/details/38902087