awk의 쉘 간격 사용

awk의 쉘 간격 사용

파일이 있어요

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

예를 들어 입력 간격이 필요하므로 10:15출력은 a 10:10 10:30어떻게 사용해야 합니까 awk?

답변1

1) 시간과 분을 별도로 비교하십시오.

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) 시간을 분으로 변환:

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) 사용 기능:

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

관련 정보