Isso faria isso, espero. Eventos vão para o arquivo events
. E as mensagens vão para o stdout.
Salve este arquivo em myprogram.awk (por exemplo):
#!/usr/bin/awk -f
BEGIN {
s=0; ### state. Active when parsing inside an event
nevent=0; ### Current event number
printf "" > "events"
}
# Start of event
/^ *Data control raising event/ {
s=1;
dentries=0;
print "*** Event number: " nevent >> "events"
nevent++
}
# Standard event line
s==1 {
print >> "events"
}
# DataChangeEntry line
/^ *==== DataChangeEntry/ {
dentries ++
}
# End of event
s==1 && /^ *\]\]/ {
s=0;
print "" >> "events"
if(dentries==0){
print "Warning: Event " nevent " has no Data Entries"
}
}
END {
print "Total event count: " nevent
}
Você pode invocá-lo de maneiras diferentes:
-
myprogram.awk inputfile.txt
-
awk -f myprogram.awk inputfile.txt
Exemplo de saída:
Warning: Event 3 has no Data Entries
Total event count: 3
Você pode verificar todos os eventos juntos no arquivo chamado events
no diretório de trabalho.