【发布时间】:2012-03-11 20:56:44
【问题描述】:
我想制作一个 awk 脚本来计算它有多少文件作为参数, 如果我在 BEGIN 或 END 处使用计数器,结果将始终为 1; awk 是否合并我作为参数提供的文件?
无论我提供多少个文件作为参数,以下脚本都会打印“1” (“n”将用于计算所有文件中有多少单词)
BEGIN {nrFiles++}
{ n+=NF}
END {print nrFiles}
最后的结果:
{ n+=NF}
END {print "Number of files=",ARGC-1, "\nNumber of words=",n,"\nMean number of words=",n/(ARGC-1) }
感谢您的宝贵时间
【问题讨论】:
-
即使文件为空也必须工作吗?
-
未指定,但我找到了 ARGC 变量(存储命令行参数的数量),如果我传递了 3 个文件 ARGC=4。我想我可以用这个对吗?
-
其他参数如 -v 也将包含在 ARGC 计数中。
-
@VaughnCato,我不这么认为:试试这个
awk -v a=b -v c=d 'BEGIN {for (i=0; i<=ARGC; i++) printf("%d\t%s\n",i,ARGV[i])}' file* -
GNU awk 也有
BEGINFILEandENDFILEblocks 如果您需要使用它们。