引言
- 本文主要介绍AWK中的一些内置变量(不包含前面已经介绍的常用内置变量),仅供参考。
- 本文介绍的主要是内置变量CONVFMT与OFMT,ENVIRON
CONVFMT与OFMT变量
- CONVFMT与OFMT的作用是用于指定数字转换格式和输出格式的
- CONVFMT定义了awk中的数字格式转换成字符串格式,默认是"%.6g",也就是保留六位小数。
- OFMT与CONVFMT作用类似,只是它影响的是输出的时候将数字转换成字符串的格式,默认保留六位小数
- 注1:尽管这两个变量在某些情况下可以互换使用,但它们的作用略有不同。CONVFMT 变量主要用于控制数字的转换格式,只是将数字转换,而 OFMT 变量主要用于控制数字的输出格式,偏向于输出的时候转换。
- 注2:CONVFMT 和 OFMT 变量只影响数字的转换和输出格式,对于非数字类型的变量,这些变量的值不起作用
- 注3:输出的时候不再是print而是printf,这两个的区别放在后面解释,此处注意使用的不是print即可;
awk 'BEGIN {
printf "CONVFMT=%s, num=%f, str=%s\n", CONVFMT, 1997.1101, 1997.1101
}'
# 控制保留小数位数
awk 'BEGIN {
printf "CONVFMT=%s, num=%.2f, str=%s\n", CONVFMT, 1997.1101, 1997.1101
}'
# 变成整数
awk 'BEGIN {
CONVFMT="%d";
printf "CONVFMT=%d, num=%.2f, str=%s\n", CONVFMT, 1997.1101, 1997.1101
}'
# OFMT
awk 'BEGIN { OFMT="%f";print 1997.1101 }'
awk 'BEGIN { OFMT="%d";print 1997.1101 }'
ENVIRON变量
- 在 awk 中,ENVIRON 变量是一个关联数组,用于存储系统环境变量的值。该数组的键是环境变量的名称,值是环境变量的值。可以使用 ENVIRON 变量来获取特定环境变量的值,或者遍历所有环境变量及其对应的值,感觉就像python中的字典一样。
# 比如输出当前服务器中user环境变量
awk 'BEGIN { print ENVIRON["USER"] }'
# 添加环境变量YOUR
YOUR=hello awk 'BEGIN { print ENVIRON["YOUR"] }'
- 比如Linux中,ENVIRON只是可以直接获取到系统环境变量并以awk定义的方式展示出来,只是个工具
# 可以使用以下方法将系统环境变量全部打印出来(这里包含了for循环以及类似占位符的用法,后面再详解)
awk 'BEGIN {
for (env in ENVIRON)
printf "%s=%s\n", env, ENVIRON[env];
}'