原文:
读取命令行上的参数
awk 'BEGIN{for (i=0;i<ARGC;i++)print ARGV[i]}' 1 2 3 4 5
输出结果:
awk
1
2
3
4
5
说明:
ARGC:为一整数,代表命令行上除选项-v –f及其对应参数外所有参数的数目
ARGV[]:为一字符串数组:ARGV[0],ARGV[1],ARGV[2]…ARGV[ARGC-1]
如上例:ARGC=6
ARGV[0]=”awk”
ARGV[1]=”1”
ARGV[2]=”2”
……
ARGV[5]=”5”
awk 通过 ARGC 来判断应开启的数据文件个数.但使用者可改变 ARGC; 当 ARGC 之值被使用者设为 1 时;awk将被蒙骗,误以为命令行上并无数据文件文件名, 故不会以 ARGV[1], ARGV[2],..为文件名来打开文件读取数据; 但在程序中仍可通过 ARGV[1], ARGV[2],..来取得命令行上的数据.
例子:
awk 'BEGIN{ARGC=2} {print $0,ARGV[1],ARGV[2]}' emp.dat reg.dat
输出结果:
A341 Dan 110 215 emp.dat reg.dat
P158 Max 130 209 emp.dat reg.dat
P148 John 125 220 emp.dat reg.dat
A123 Linda 95 210 emp.dat reg.da
说明:因为ARGC=2所有awk只打开参数ARGV[1](emp.dat)对应的文件,将只会输出emp.dat文件的内容,但是在awk依然可以使用参数ARGV[2]