esta não é mais uma opção sed. você deve analisar a string onde o tempo é 00:01:00
, 00:10:00
ou 01:00:07
para contar mais que 60s.
Eu criei um arquivo awk
{ result = "" ;
for (i=1;i<=NF;i++) {
if ( $i ~ /^delay=/ ) {
s=split(substr($i,6) ,A,":") ;
t=60*A[1]+A[2] ;
#printf "%2d : %d mn (60x%s+%s) : %s\n",i,t,A[1],A[2],$i ;
if ( !t ) next ;
result = $i ;
}
if ( $i ~ /^Hostname/ ) result = result $i ;
}
if ( result != "" ) print result ;
}
alguma dica:
-
( $i ~ /^foo/ )
corresponde ao campo i-ésimo com foo (^
: início do padrão) -
split(substr($i,6) ,A,":")
split H: M: S parte no array A -
A = B C
: concatenar cadeia B e C para A
com a amostra de hoje, isso dá ( u
sendo o nome do arquivo, u.awk
sendo o arquivo que armazena o programa awk)
awk -f u.awk u
delay=00:02:34, Hostname=BY1PR0701MB1752.namprd07.prod.gmail.com]
delay=00:01:17, Hostname=CY1PR07MB1448.namprd07.prod.googlemail.com]
delay=00:03:31,