AWK - 内置变量

AWK - 内置变量 首页 / Awk入门教程 / AWK - 内置变量

AWK提供了几个内置变量,他们在编写AWK脚本时起着重要作用,本章演示了内置变量的用法。

ARGC 变量

它表示在命令行中提供的参数数量。

[Learnfk]$awk 'BEGIN {print "Arguments =", ARGC}' One Two Three Four

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

Arguments=5

ARGV 变量

它是一个存储命令行参数的数组,数组的有效索引范围是0到ARGC-1。

[Learnfk]$awk 'BEGIN { 
   for (i=0; i < ARGC - 1; ++i) { 
      printf "ARGV[%d]=%s\n", i, ARGV[i] 
   } 
}' one two three four

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

ARGV[0]=awk
ARGV[1]=one
ARGV[2]=two
ARGV[3]=three

CONVFMT 变量

它代表数字的转换格式,其默认值为%.6g 

[Learnfk]$awk 'BEGIN { print "Conversion Format =", CONVFMT }'

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

Conversion Format=%.6g

ENVIRON 变量

它是环境变量的关联数组。

[Learnfk]$awk 'BEGIN { print ENVIRON["USER"] }'

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

Learnfk

要查找其他环境变量的名称,请使用 env 命令。

FILENAME 变量

它代表当前文件名。

[Learnfk]$awk 'END {print FILENAME}' marks.txt

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

marks.txt

FS 变量

它表示(输入)字段分隔符,其默认值为空格,您也可以使用 -F 命令行选项来更改此设置。

[Learnfk]$awk 'BEGIN {print "FS=" FS}' | cat -vte

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

FS= $

NF 变量

它代表当前记录中的字段数。如,以下选项仅打印包含两个以上字段的行。

[Learnfk]$echo -e "One Two\nOne Two Three\nOne Two Three Four" | awk 'NF > 2'

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

One Two Three
One Two Three Four

NR 变量

它代表当前记录的编号。如,下面的示例在当前记录号小于3的情况下打印记录。

[Learnfk]$echo -e "One Two\nOne Two Three\nOne Two Three Four" | awk 'NR < 3'

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

One Two
One Two Three

FNR 变量

它与NR类似,但相对于当前文件,当AWK对多个文件进行操作时,此函数很有用, FNR的值用新文件重置。

OFMT 变量

它代表输出格式编号,其默认值为%.6g

[Learnfk]$awk 'BEGIN {print "OFMT=" OFMT}'

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

OFMT=%.6g

OFS 变量

它代表输出字段分隔符,其默认值为空格。

[Learnfk]$awk 'BEGIN {print "OFS=" OFS}' | cat -vte

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

OFS= $

ORS 变量

它代表输出记录分隔符,其默认值为换行符。

[Learnfk]$awk 'BEGIN {print "ORS=" ORS}' | cat -vte

执行上述代码后,您将获得以下输出-

ORS=$
$

RLENGTH 变量

它表示由 match 函数匹配的字符串的长度, AWK的match函数在输入字符串中搜索给定的字符串。

[Learnfk]$awk 'BEGIN { if (match("One Two Three", "re")) { print RLENGTH } }'

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

2

RS 变量

它表示(输入)记录分隔符,其默认值为换行符。

[Learnfk]$awk 'BEGIN {print "RS=" RS}' | cat -vte

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

RS=$
$

RSTART 变量

它表示由 match 函数匹配的字符串中的第一个位置。

[Learnfk]$awk 'BEGIN { if (match("One Two Three", "Thre")) { print RSTART } }'

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

9

SUBBSEP 变量

它代表数组下标的分隔符,其默认值为\034 。

[Learnfk]$awk 'BEGIN { print "SUBBSEP=" SUBBSEP }' | cat -vte

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

SUBBSEP=^\$

$0 变量

它代表整个输入记录。

[Learnfk]$awk '{print $0}' marks.txt

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

1) Learnfk     Physics   80
2) Toolfk    Maths     90
3) Chromefk    Biology   87
4) Poemfk    English   85
5) Nesfk     History   89

$n 变量

它表示当前记录中的第n 字段,其中这些字段由FS分隔。

[Learnfk]$awk '{print $3 "\t" $4}' marks.txt

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

Physics   80
Maths     90
Biology   87
English   85
History   89

ARGIND 变量

它表示正在处理的当前文件在ARGV中的索引。

[Learnfk]$awk '{ 
   print "ARGIND  =", ARGIND; print "Filename=", ARGV[ARGIND] 
}' junk1 junk2 junk3

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

ARGIND =1
Filename= junk1
ARGIND =2
Filename= junk2
ARGIND =3
Filename= junk3

BINMODE 变量

它用于为非POSIX系统上的所有文件I/O指定二进制模式,数值1、2或3分别指定输入文件,输出文件或所有文件应使用二进制I/O,字符串值 r 或 w 指定输入文件或输出文件应分别使用二进制I/O, rw 或 wr 的字符串值指定所有文件应使用二进制I/O。

ERRNO 变量

当 getline 重定向失败或 close 调用失败时,字符串表示错误。

[Learnfk]$awk 'BEGIN { ret=getline < "junk.txt"; if (ret == -1) print "Error:", ERRNO }'

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

Error: No such file or directory

FILEDWIDTHS 变量

设置了以空格分隔的字段宽度变量列表,GAWK会将输入解析为固定宽度的字段,而不是使用FS变量的值作为字段分隔符。

IGNORECASE 变量

设置此变量后,GAWK变为不区分大小写。以下示例演示了这一点-

[Learnfk]$awk 'BEGIN{IGNORECASE=1} /amit/' marks.txt

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

1) Learnfk  Physics   80

LINT 变量

它提供了GAWK程序中-lint选项的动态控制。设置此变量后,GAWK将打印警告。

[Learnfk]$awk 'BEGIN {LINT=1; a}'

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

awk: cmd. line:1: warning: reference to uninitialized variable `a'
awk: cmd. line:1: warning: statement has no effect

procinfo 变量

这是一个关联数组,其中包含有关进程的信息,如真实和有效的UID编号,进程ID编号等。

[Learnfk]$awk 'BEGIN { print procinfo["pid"] }'

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

4316

TEXT DOMAIN 变量

它代表AWK程序的文本域,它用于查找程序字符串的本地化翻译。

[Learnfk]$awk 'BEGIN { print TEXT DOMAIN }'

在执行此代码时,您将获得以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/awk/awk-built-in-variables.html

来源:LearnFk无涯教程网

messages

由于 en_IN 区域设置,以上输出显示了英文文本

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

算法面试通关40讲 -〔覃超〕

分布式协议与算法实战 -〔韩健〕

Django快速开发实战 -〔吕召刚〕

乔新亮的CTO成长复盘 -〔乔新亮〕

超级访谈:对话玉伯 -〔玉伯〕

技术领导力实战笔记 2022 -〔TGO 鲲鹏会〕

结构沟通力 -〔李忠秋〕

LangChain 实战课 -〔黄佳〕

超级访谈:对话道哥 -〔吴翰清(道哥)〕

好记忆不如烂笔头。留下您的足迹吧 :)