ファイルがあります。
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