Skip to content


AWK变量问题

awk中使用shell的环境变量
一:”‘$var'”
这种写法大家无需改变用’括起awk程序的习惯,是老外常用的写法.如:

var=”test”
awk ‘BEGIN{print “‘$var'”}’

这种写法其实际是双括号变为单括号的常量,传递给了awk.
如果var中含空格,为了shell不把空格作为分格符,便应该如下使用:

var=”this is a test”
awk ‘BEGIN{print “‘”$var”‘”}’

二:'”$var”‘
这种写法与上一种类似.如果变量含空格,则变为'””$var””‘较为可靠.
三.把括起awk程序的”变为””,使用”$var”
如:

$var=”this is a test”
awk ‘BEGIN{print “$var”}”

这是因为在””里$是特殊字符,而在”里$是普通字符.
四:export 变量,使用ENVIRON[“var”]形式,
如:

$var=”this is a test”;export $var
awk ‘BEGIN{print ENVIRON[“var”]}’

五:当然也可以使用-v选项
如:

$var=”this is a test”
awk -vnvar=”$var” ‘{print nvar}’

这样便把系统变量定义成了awk变量.

二.在awk中给系统变量附值

eval $(awk ‘BEGIN{print “a=ggg b=3”}’)

eval $(grep -v ‘#’ “$CONFFILE” | awk ‘BEGIN{FS=”|”} NR==”‘$var_list'”{printf(“HOST=\”%s\” MAX=\”%s\” EMAILLIST=\”%s\” PHONE=\”%s\”\n”,$1,$2,$3,$4)}’)


http://hi.baidu.com/%CA%AB%D5%B9/blog/item/ad30993d12c69700bba16776.html

Posted in shell, 技术.

Tagged with , .


3 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. 用户a says

    博客不错,学习学习!

  2. 有效 says

    好文章,博主写的不错

  3. 女士 says

    我看了楼主的文章之后,现在已经明白了,以后会向楼主学习的。



Some HTML is OK

or, reply to this post via trackback.