如何在运行程序时在不放置文件名的情况下在某个文件上运行awk脚本

时间:2017-01-27 14:30:23

标签: awk

是否可以在不提供文件的情况下使awk程序在文件上运行 运行程序时文件的名称。

我试图这样做,但由于某种原因它不起作用,有人可以请解释 为什么这不起作用,我如何使它工作

#!/bin/awk -f
BEGIN{
ARGV[1]="books"
}
{
split($0,a,":")
if(a[4]!="-"){
n[a[2]]=n[a[2]]+1
print $0","n[a[2]]
}
}
END{
for(x in n){
print n[x]
}
}

在这个程序中,我试图让它在文件名书上运行,但它仍然不起作用

1 个答案:

答案 0 :(得分:5)

除了向ARGV添加元素外,您还需要增加ARGC

#!/bin/awk -f
BEGIN{
  ARGV[1]="books"
  ++ARGC
}

来自GNU AWK manual

  

在[{1}}]中存储其他元素并递增ARGV会导致读取其他文件。