已复制
全屏展示
复制代码

linux最常用命令awk变量传递


· 1 min read

一. shell 向 awk 变量传递值

1.1 借助-v选项传递

借助-v选项,可以将外部值(并非来自stdin)传递给awk:

# VAR=10000 
# echo  |  awk  -v  VARIABLE=$VAR  '{ print VARIABLE }'
10000

1.2 作为awk参数传递

另一种传递外部变量方法:变量之间用空格分隔作为 awk 的命令行参数跟随在BEGIN、{} 和 END 语句块之后。

# var1="aaa"
# var2="bbb"
# echo  |  awk  '{ print v1,v2 }'  v1=$var1 v2=$var2
aaa bbb

1.3 全局变量传递

将shell全局变量传递给awk

# echo |  awk  '{print  ENVIRON["PATH"]} '
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin


export var="this is a test"
awk 'BEGIN{print ENVIRON["var"]}'

1.4 双引号引用

使用双引号,在双引号内部用单引号

var="test"
awk 'BEGIN{print "'$var'"}'

二. awk 向 shell 变量传递值

eval $(awk 'BEGIN{print "var1='str1';var2='str2'"}')

echo $var1
str1

echo $var2
str2
eval $(awk -F: '{printf("username=%s; password=%s;",$1,$2)}' /etc/passwd)

echo $username
echo $password

# 这里面的变量会被覆盖,因为每读取一行数据就赋值一次
🔗

文章推荐