Intervalos de shell usando o awk

1

Eu tenho um arquivo

a 10:10 10:30
b 12:15 13:15
c 16:54 17:54

e preciso inserir o intervalo por exemplo 10:15 , então minha saída deve ser a 10:10 10:30 Como preciso fazer isso usando awk ?

    
por user3334375 24.04.2015 / 13:31

1 resposta

-1

1) Comparando horas e minutos separadamente:

awk -vt="10:15" -F"[: ]" '
  BEGIN{split(t,a,":")}
  $2<=a[1]&&$3<=a[2]&&$4>=a[1]&&$5>=a[2]
' <<_INPUT_
a 10:10 10:30
b 12:15 13:15
c 16:54 17:54
_INPUT_
a 10:10 10:30

2) Conversão de horas para minutos:

awk -vt="13:00" -F"[: ]" '
  BEGIN{split(t,a,":");t=60*a[1]+a[2]}
  60*$2+$3<=t&&60*$4+$5>=t
' <<_INPUT_
a 10:10 10:30
b 12:15 13:15
c 16:54 17:54
_INPUT_
b 12:15 13:15

3) Usando uma função:

awk -vt="17:15" '
  function f(s){split(s,a,":");return(60*a[1]+a[2])}
  f($2)<=f(t)&&f($3)>=f(t)
' <<_INPUT_
a 10:10 10:30
b 12:15 13:15
c 16:54 17:54
_INPUT_
c 16:54 17:54
    
por 13.05.2015 / 12:50

Tags