如何打印出作为参数传递给awk程序的文件名

时间:2018-10-22 00:44:49

标签: awk

我使用for循环迭代文件列表,并在每次迭代时将一个文件名传递给awk脚本。

我不仅要打印错误代码,还要打印生成错误的文件的名称。

类似的东西:打印错误”;“ THENAMEOF_THE_FILE >> file.txt;

awk脚本如下所示:

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

1 个答案:

答案 0 :(得分: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"