AWK使用总结7

141 阅读2分钟

引言

  • 本文主要介绍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]; 
}'