如何打印作为参数传递给awk程序的文件名
我使用for循环来迭代文件列表,每次操作时,我都会将一个文件名传递给awk脚本 我不仅要打印错误代码,还要打印生成错误的文件名 类似于:打印错误“;”文件名>>FILE.txt awk脚本如下所示:如何打印作为参数传递给awk程序的文件名,awk,Awk,我使用for循环来迭代文件列表,每次操作时,我都会将一个文件名传递给awk脚本 我不仅要打印错误代码,还要打印生成错误的文件名 类似于:打印错误“;”文件名>>FILE.txt awk脚本如下所示: awk ' function errorManager(error) { print error >> file.txt; } BEGIN {error1="ERROR CODE X"} {if (NR==1) if(length($0) != 10) { errorManager(er
awk ' function errorManager(error)
{
print error >> file.txt;
}
BEGIN {error1="ERROR CODE X"}
{if (NR==1)
if(length($0) != 10)
{
errorManager(error1)
}
}
END{print "STOP"}' $1
这就是你要找的:
awk '
function errorManager(idx, errorArr, error) {
errorArr[1] = "ERROR CODE X"
error = (idx in errorArr ? errorArr[idx] : "Unspecified Error")
printf "Error %s[%d]: %s\n", FILENAME, FNR, error | "cat>&2"
}
NR==1 {
if ( length($0) != 10 ) {
errorManager(1)
}
}
END{ print "STOP" }
' "$1" 2>"file.txt"
根据手册页,它是变量
FILENAME
(虽然我不知道这是否是特定于gawk的事情),它不是特定于gawk的,它在所有awk中都是相同的。