ARGC表示命令行上除了选项-F,-v,-f以及这些选项所对应的参数之外的所有参数的个数,如果awk命令是直接书写在命令行上,那ARGC在计算参数个数的时候也会忽略这个的。
ARGV是一个数组,用于记录命令行上参数,其个数由ARGC指定,数组下标从0开始。
例如下面的示例程序,关于awk命令的语法请参考(awk命令语法详解):
CodingAnts@ubuntu:~/awk$ awk -F\t -v a=8 'BEGIN{print "ARGC="ARGC;for(i in ARGV) print "ARGV["i"]="ARGV[i]}' v14 v15 ARGC=3 ARGV[0]=awk ARGV[1]=v14 ARGV[2]=v15
示例中,awk命令是直接写在命令行上的,-F参数指定记录分割符为\t(Tab),-v定义并初始化一个变量啊,并赋值8,有两个输入文件v14和v15。awk命令实现打印awk内建变量ARGC和ARGV的值,从输出信息可以看出,ARGC=3,分别对应awk、v14和v15。
值得注意的是,在ARGC=3的时候,只有两个输入文件。
下面再看看把awk指令写入单独文件时候的情况,新建一个arg.awk,敲入上面的awk指令(就是单引号之间的内容)
CodingAnts@ubuntu:~/awk$ cat arg.awk BEGIN{ print "ARGC="ARGC; for(i in ARGV) print "ARGV["i"]="ARGV[i] } CodingAnts@ubuntu:~/awk$ awk -F\t -v a=8 -f arg.awk v14 v15 ARGC=3 ARGV[0]=awk ARGV[1]=v14 ARGV[2]=v15
可以看出,输出信息和第一个示例程序一样
转载请注明:Coding Ants » awk内建变量示例详解之ARGC、ARGV