awk를 사용하여 시간 범위를 기준으로 파일 범위를 인쇄하시겠습니까?

awk를 사용하여 시간 범위를 기준으로 파일 범위를 인쇄하시겠습니까?

간단한 작업을 수행했지만 awk이를 수행할 방법을 찾을 수 없습니다! 다음과 같이 연도, 율리우스력 날짜 및 시간의 이름을 딴 항목이 포함된 텍스트 파일이 있습니다.

blah_2012251_130500_blah  
blah_2012251_131000_blah  
blah_2012251_131500_blah  
...  
blah_2012253_063000_blah  

특정 시간 범위 내의 항목만 포함하는 새 파일을 만드는 방법을 찾으려고 합니다. 예를 들어, 2012년 251일 오후 2시 2분(140200)부터 2012년 252일 오전 6시 7분(060700)까지의 시간을 포함하는 파일이 포함되어야 합니다.

blah_2012251_140000_blah  
blah_2012251_140500_blah
...  
blah_2012252_060500_blah
blah_2012252_061000_blah

또한 이 예제처럼 파일이 항상 5분마다 증가하는 것은 아니므로 열린 범위여야 합니다.

답변1

다음이 작동합니다. 필요에 따라 필드 번호 2와 3을 조정합니다.

 awk -F'_' 'int($2""$3) > 2012252140600 && int($2""$3) < 2012252180700' filename

답변2

f1과 f2는 시작 날짜와 시간이고, l1과 l2는 종료 날짜와 시간입니다.

awk -F_  -v f1="2012251" -v f2="140200" -v l1="2012252" -v l2="060700" '($2==f1 && $3>=f2) || ($2==l1 && $3<=l2) || ($2>f1 && $2<l1)' file

관련 정보