我是shell脚本的新手。
我有一个日志文件,如果一行重复,我想要一个脚本来提醒我。例如:
我有以下日志:
2016-04-07 06:46:34,750 INFO: Error detected
2016-04-07 06:46:34,801 INFO: Case cleared
2016-04-07 06:46:35,744 INFO: Error detected
2016-04-07 06:48:34,558 INFO: Error detected
在上面的日志中,有两条连续的“检测到错误”的重复行。如果发生这种情况,我想收到警报。
答案 0 :(得分:1)
您可以使用此awk打印重复的行:
${}
<强>输出:强>
awk -F ': ' 'seen[$NF]++ > 1' file
答案 1 :(得分:0)
$ awk '!NF{next} {orig=$0; $1=$2=""} $0==prev{print orig} {prev=$0}' file
2016-04-07 06:48:34,558 INFO: Error detected
答案 2 :(得分:0)
你可以试试这个
awk -v prev="" '
$0 ~ /^$/ {next}
{
info=$4" "$5;
if(prev == info)
printf("repeating line: %s\n",$0);
prev = info;
}' infile
输出
repeating line: 2016-04-07 06:48:34,558 INFO: Error detected
答案 3 :(得分:0)
这将仅报告第二个连续错误:
awk '
/^[[:blank:]]*$/ {next}
/Error detected$/ {errors++}
!/Error detected$/ {errors=0}
errors==2
' file
我假设您不需要收到第3次,第27次等连续错误的通知。