我正在查看日志并希望在程序尝试失败 3 次后进行检测:
tail -f file.log | grep --line-buffered program\ failed\ string
Run Code Online (Sandbox Code Playgroud)
如果来自grep
命中 3的行数我想返回一个错误。
我怎样才能做到这一点?
awk是一个很好的扫描流的工具。
我认为它应该显示所有行以查看日志直到它退出,这与您的grep示例相反,它只显示错误行。
tail -f file.log | awk '
BEGIN {
count = 0
}
{
print($0)
if ($0 ~ /program failed/) {
count++
if (count == 3) {
exit(1)
}
}
}
'
Run Code Online (Sandbox Code Playgroud)
您可以将 awk 代码移动到tail.awk并根据需要调用tail -f file.log | awk -f tail.awk
。
等效地,以更紧凑的形式:
tail -f file.log | awk '1; /program failed/ && ++count == 3 { exit 1 }'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
811 次 |
最近记录: |