2017-02-20 5 views
0

나는 아래의 테스트 데이터를 가지고 있으며 현재 날짜의 데이터를 가져올 수있었습니다 00:00:01에서 08:00:00으로 데이터를 가져올 시간을 어떻게 비교할 수 있습니까? awk가 24 시간 데이터의 시간 필드를 비교합니다

Test1 prog 02/20/2017 03:45:56 Success 
Test2 prog 02/20/2017 05:21:38 Fail 
Test3 prog 02/20/2017 09:35:36 Success 
Test4 prog 02/19/2017 06:15:56 Fail 
Test5 prog 02/18/2017 07:35:16 Active 
Test6 prog 02/19/2017 03:45:56 Success 

나는 내가 즉 시간 범위에 대해 비교하는 시간 네 번째 열을 중단 할 방법에 대한 아무 생각이 없다
a=`date +%m/%d/%Y` 
awk -v a="$a" '$3==a' file 

했다.

답변

0
a=$(date +%m/%d/%Y) 

awk -F":| *" -v a="$a" '$3==a {t=($4*60*60 + $5*60 + $6); if(t>=1 && t<=28800) print}' File 
사용 :

현장 seperators로 space sequence. 여기에서 시간을 초로 변환하고 1s8hrs 사이에 있는지 확인합니다. 그렇다면 라인을 인쇄하십시오. 첫 번째 필터 ($3==a)로 날짜 확인이 수행됩니다.

+0

이 시간 열에도 정렬 할 수 있습니까? – Sid

+0

날짜 열이 가변적 인 경우 행의 시작 부분에서 a = $ (date + % m/% d/% Y)를 검색하고 다음 필드에서 시간을 계산합니다. – Sid

+0

@Sid : 이처럼 :'awk -F ": | *"-va = "$ a" '{i = 0; while (++ i <= NF) {if (match ($ i, a)) {t = ($ (i + 1) * 3600 + $ (i + 2) * 60 + $ (i + 3) if (t> = 1 && t <= 28800) print}}} 'File' –

0
awk -v a=`date '+%m/%d/%Y'` '$3$4 ~ a"0[0-8]"' file 

위의 내용은 오늘 날짜에 필요한 줄을 제공합니다. 당신은 이러한 모든 라인을 원하는 경우에

후 사용 : 당신이

awk '$4 ~ "0[0-8]"' file 

참고 시간 범위에 따라 정규 표현식 (~ 후 문자열)을 수정할 수 있습니다.