常用的awk内置变量
序号 名称 描述
1 ARGC 命令行参数的数目。
2 ARGV 包含命令行参数的数组。
3 ARGIND 当前被处理的文件的ARGV的index(从0开始算)。
4 BINMODE 在non-POSIX系统中,文件的I/O指定使用"binary"模式。
5 CONVFMT 数字转换格式(默认值为%.6g)
6 ENVIRON 当前环境变量关联数组。
7 ERRNO 包含一个描述错误信息的字符串。
8 FS 字段分隔符(默认是任何空格)。
9 FIELDWIDTHS 字段宽度列表(用空格键分隔)。设置以后匹配字段宽度而不是以FS分隔。
10 FILENAME 当前输入的文件名。
11 FNR 当前输入文件的记录号数值。
12 IGNORECASE 控制所有正则表达式和字符串操作的大小写敏感性(若值为非零,则忽略大小写匹配,初始值为0)。
13 LINT 从AWK程序内部提供--lint选项的动态控制。(若为真,打印lint警告)
14 NF 当前输入记录中的字段数。
15 NR 到目前为止看到的输入记录的总数。
16 OFMT 数字的输出格式(默认值是%.6g)。
17 OFS 输出字段分隔符(默认值是一个空格)。
18 ORS 输出记录分隔符(默认值是一个换行符)。
19 PROCINFO 这个数组的元素提供正在运行的AWK程序信息。可用(PROCINFO["egid"] PROCINFO["euid"] PROCINFO["FS"] PROCINFO["gid"] PROCINFO["pgrpid"] PROCINFO["pid"] PROCINFO["ppid"] PROCINFO["uid"] PROCINFO["version"] )
20 RS 记录分隔符(默认是一个换行符)。
21 RT 记录终止符(gawk使用RS的值)
22 RSTART 由match()函数匹配到的第一个字符索引。(若无匹配则为0)
23 RLENGTH 由match()函数所匹配的字符串的长度。(若无匹配为-1)
24 SUBSEP 多个数组元素下标分隔符(默认值是\034)。
25 TEXTDOMAIN AWK程序的文本域。用来查找程序的字符串本地化翻译。
常用的AWK语句
exit 停止程序的执行,并且退出。
next 停止处理当前记录,并且前进到下一条记录。
nextfile 停止处理当前文件,并且前进到下一个文件。
print 打印使用引号括起来的文本、记录、字段和变量。(缺省情况下是打印出当前整行记录。)
printf 打印格式化文本,类似于它的 C 语言对等成分,但必须指定结尾的换行。
sprintf 返回格式化文本字符串,与 printf 使用相同的格式。
内置的字符串函数
gsub(r,s) 在整个$0中用s代替r
gsub(r,s,t) 在整个t中用s替代r
index(s,t) 返回s中字符串t的第一位置
length(s) 返回s长度
match(s,r) 测试s是否包含匹配r的字符串
split(s,a,fs) 在fs上将s分成序列a
sprint(fmt,exp) 返回经fmt格式化后的exp
sub(r,s) 用$0中最左边最长的子串代替s
substr(s,p) 返回字符串s中从p开始的后缀部分
substr(s,p,n) 返回字符串s中从p开始长度为n的后缀部分
常用AWK参数
-v i=$i 将命令行里的变量i传递给awk内部
关于awk的一些常用技巧就写到这里了,其他一些awk和正则表达式,以#! /usr/bin/awk开头的脚本书写方式,还有在动作中读写文件等操作,因为平时用的不多,等有了一定的积累再发上来吧。
这几篇文章的来源主要是参考百度百科、https://awk.readthedocs.io/en/latest/以及部分参考了优快云、博客园的一些文章汇总而来