awk使用ARGC和ARGV来在命令行中传入一些变量到awk脚本中。其中:
- ARGC包含传入awk脚本的参数的总数目
- ARGV为一个包含所有传入awk脚本的参数的数组,该数组下标从0到ARGC-1。
- 当你传入5个参数,ARGC的值为6
- ARGV[0]总是"awk"
下面简单的一个例子展示了ARGC和ARGV怎么工作的:
[email protected]:~/bash/awk$ cat arguments.awk BEGIN { print "ARGC=", ARGC for(i=0;i<ARGC;i++) print ARGV[i] } [email protected]:~/bash/awk$ awk -f arguments.awk arg1 arg2 ARGC= 3 awk arg1 arg2
在gawk中,当前正在处理的文件是存储在ARGV数组中,该数组可在循环块中被访问。ARGIND是访问ARGV数组的下标去检索当前文件。当你在awk脚本中仅仅处理一个文件时,ARGIND的值为1,并且ARGV[ARGIND]会返回当前正在处理的文件名。
下面这个例子只包含一个块,那就是打印ARGIND的值,以及得到当前文件名从ARGV[ARGIND]
{ print "ARGIND:", ARGIND print "Current file:", ARGV[ARGIND] }
[email protected]:~/bash/awk$ awk -f argind.awk num.txt ARGIND: 1 Current file: num.txt ARGIND: 1 Current file: num.txt ARGIND: 1 Current file: num.txt ARGIND: 1 Current file: num.txt ARGIND: 1 Current file: num.txt
其中num.txt的内容为:
[email protected]:~/bash/awk$ cat num.txt 1 2 3 4 5
如果传入不是一个文件,而是两个文件,则输出结果为:
[email protected]:~/bash/awk$ awk -f argind.awk num.txt num2.txt ARGIND: 1 Current file: num.txt ARGIND: 1 Current file: num.txt ARGIND: 1 Current file: num.txt ARGIND: 1 Current file: num.txt ARGIND: 1 Current file: num.txt ARGIND: 2 Current file: num2.txt ARGIND: 2 Current file: num2.txt
num2.txt的内容为:
[email protected]:~/bash/awk$ cat num2.txt 1 2
时间: 2024-11-09 03:15:52