Comando
tail -f log.txt | awk '{if($1~/[0-9][0-9]:[0-9][0-9]:[0-9][0-9],[0-9]+/){if($0~/\[[A-Za-z]+-[A-Za-z]+\]/){MATCH=1}else{MATCH=0}}if(MATCH){print $0}}'
Como funciona
-
awkprocessa a saída canalizada linha por linha. -
Se o primeiro campo da linha (delimitado por espaço e indicado por
$1) corresponder à expressão regular[0-9][0-9]:[0-9][0-9]:[0-9][0-9],[0-9]+, o valor deMATCHserá alterado:-
Se o padrão
\[[A-Za-z]+-[A-Za-z]+\]ocorrer,MATCHserá definido como1(truthy). -
Se o padrão
\[[A-Za-z]+-[A-Za-z]+\]não ocorrer,MATCHserá definido como0(falsy).
-
-
Finalmente, se
MATCHfor verdadeiro,print $0imprimirá toda a linha (denotada por$0).Como
MATCHé verdadeiro se e somente se a última linha que começa com um registro de data e hora contiver o padrão[something-something], isso produzirá a saída desejada.