这是问题所在:
我有一个AWK脚本,计划每天通过crontab条目运行。此特定脚本将错误输出到错误日志。我有一个变量,每次遇到错误时都会递增,并在我的脚本末尾有以下控制语句:
if (blErrorCounter) {
print "Log contains " blErrorCounter " errors!"
} else {
print "Log contains no errors!"
}
该脚本包含许多将数据输出到日志文件的其他错误处理条件,但我希望能够将上面的内容打印为文件中的第一条记录...
它可能很简单,因为我是AWK的菜鸟,但任何帮助/指针都会受到极大的欢迎。
肖
答案 0 :(得分:4)
您需要将错误消息保存到END部分进行打印,例如:
/error/ { errors[++blErrorCounter] = "Got error at line " FNR }
END {
if (blErrorCounter) {
print "Log contains", blErrorCounter, "errors!"
for (ec=1; ec <= blErrorCounter; ec++) {
print errors[ec]
}
} else {
print "Log contains no errors!"
}
}
你也可以写一点:
/error/ { errors[++blErrorCounter] = "Got error at line " FNR }
END {
print "Log contains", (blErrorCounter ? blErrorCounter : "no"), "errors!"
for (ec=1; ec <= blErrorCounter; ec++) {
print errors[ec]
}
}
或者甚至只用“0”而不是单词“no”:
/error/ { errors[++blErrorCounter] = "Got error at line " FNR }
END {
printf "Log contains %d errors!\n", blErrorCounter
for (ec=1; ec <= blErrorCounter; ec++) {
print errors[ec]
}
}