awk中使用shell中的变量
一: “‘$var'”
这种写法大家无需改变用‘括起awk程序的习惯,是老外常用的写法.如:
var=”test”
awk ‘BEGIN{print “‘$var'”}’
这种写法其实际是双括号变为单括号的常量,传递给了awk.
如果var中含空格,为了shell不把空格作为分格符,便应该如下使用:
var=”this is a test”
awk ‘BEGIN{print “‘”$var”‘”}’
二: ‘”$var”‘
这种写法与上一种类似.如果变量含空格,则变为‘””$var””‘较为可靠.
三: export 变量,使用ENVIRON[“var”]形式,获取环境变量的值
例如:
var=”this is a test”; export var;
awk ‘BEGIN{print ENVIRON[“var”]}’
四: 可以使用awk的-v选项 (如果变量个数不多,个人偏向于这种写法)
例如:
var=”this is a test”
awk -v awk_var=”$var” ‘BEGIN {print awk_var}’
这样便把系统变量var传递给了awk变量awk_var.
awk向shell变量传递值
“由awk向shell传递变量”,其思想无非是用awk(sed/perl等也是一样)输出若干条shell命令,然后再用shell去执行这些命令。
eval $(awk ‘BEGIN{print “var1=‘str1′;var2=’str2′”}’)
awk中使用shell中的变量
一: “‘$var'”
这种写法大家无需改变用‘括起awk程序的习惯,是老外常用的写法.如:
var=”test”
awk ‘BEGIN{print “‘$var'”}’
这种写法其实际是双括号变为单括号的常量,传递给了awk.
如果var中含空格,为了shell不把空格作为分格符,便应该如下使用:
var=”this is a test”
awk ‘BEGIN{print “‘”$var”‘”}’
二: ‘”$var”‘
这种写法与上一种类似.如果变量含空格,则变为‘””$var””‘较为可靠.
三: export 变量,使用ENVIRON[“var”]形式,获取环境变量的值
例如:
var=”this is a test”; export var;
awk ‘BEGIN{print ENVIRON[“var”]}’
四: 可以使用awk的-v选项 (如果变量个数不多,个人偏向于这种写法)
例如:
var=”this is a test”
awk -v awk_var=”$var” ‘BEGIN {print awk_var}’
这样便把系统变量var传递给了awk变量awk_var.
awk向shell变量传递值
“由awk向shell传递变量”,其思想无非是用awk(sed/perl等也是一样)输出若干条shell命令,然后再用shell去执行这些命令。
eval $(awk ‘BEGIN{print “var1=‘str1′;var2=’str2′”}’)
[图片上传失败...(image-b9572c-1544752936401)]
[图片上传失败...(image-718c76-1544752936401)]
从上面的实验来看,上面的代码先执行awk,得到打印字符串var1=‘str1′;var2=’str2′:然后eval将此字符串作为命令执行,从而导出到shell变量
上面的方法只适用于直接赋值字符串常量,而无法赋值变量,下面的方法可赋值awk中的变量到shell变量中去:
eval 1,
3)}’ abc.txt)
之后可以在当前shell或shell脚本中使用var1,var2等变量了。


从上面的实验来看,上面的代码先执行awk,得到打印字符串var1=‘str1′;var2=’str2′:然后eval将此字符串作为命令执行,从而导出到shell变量
上面的方法只适用于直接赋值字符串常量,而无法赋值变量,下面的方法可赋值awk中的变量到shell变量中去:
eval 1,
3)}’ abc.txt)
之后可以在当前shell或shell脚本中使用var1,var2等变量了。