Awk 处理多个文件时出错

Awk 处理多个文件时出错,awk,Awk,我试图用脚本中的awk处理10个文件,我得到了以下错误 $ sh skipper.sh file1 filea fileb filec filec fileb filea fileb filec fileb awk: cmd. line:2: (FILENAME=filec FNR=7) fatal: cannot open file `file10' for reading (No such file or directory) 有人知道怎么修吗?当你点击参数10及以上,你应该使用大括号,例

我试图用脚本中的
awk
处理10个文件,我得到了以下错误

$ sh skipper.sh file1 filea fileb filec filec fileb filea fileb filec fileb awk: cmd. line:2: (FILENAME=filec FNR=7) fatal: cannot open file `file10' for reading (No such file or directory)

有人知道怎么修吗?当你点击参数10及以上,你应该使用大括号,例如

${10}

只需对代码稍加修改,就可以使用任意数量的文件

awk 'BEGIN{nfiles=ARGC-1}
...
} "$@"
通过这种方式,您可以在awk脚本中输入任意数量的文件。它还将处理空文件。如果要跳过空文件,可以使用以下选项:

awk 'FNR==1{++nfiles}
...
} "$@"

这不是awk问题。这是一个空壳问题$10是第一个参数,后面有0,而不是脚本的第十个参数。我建议为您正在使用的shell添加一个标记。您的shell可能需要重复整个命令行而不是单个参数。您可能只需要使用
“$@”
,而不是列出所有这些位置参数
$1$2…
awk 'FNR==1{++nfiles}
...
} "$@"