명령 응답에서 날짜 선택

명령 응답에서 날짜 선택

다음과 같은 명령 응답이 있습니다.

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

XXX  |   XXX | Thu Oct 18 03:32:00 UTC 2018

XXX  |   XXX | Thu Oct 18 03:32:00 UTC 2018

각 문자 집합과 파이프 사이에는 많은 탭 공간이 있습니다. 목표는 응답에서 날짜를 선택하여 현재 시간과 비교하고 차이점을 찾아 300초보다 오래되지 않았는지 확인하는 것입니다. 쉘 스크립트를 처음 만드는데 어떻게 작동하는지 잘 모르겠습니다.

나는 전체 라인을 얻기 위해 grep을 사용해 보았습니다. 문자 사이의 공백을 무시하는 방법이 있습니까? 이 날짜 형식을 일반 날짜 형식으로 변환하려면 어떻게 해야 합니까?

답변1

#!/bin/bash
grep 'UTC\|EDT\|EST' file | cut -d' ' -f 8 | while IFS= read line; do

now=$(date | cut -d' ' -f 4)

time_now=$(date -u -d "$now" +"%s")   #seconds
time_line=$(date -u -d "$line" +"%s") #seconds

difference=$(echo $((time_now - time_line)))

  if [ $difference -lt 300 ] 

     then
       echo "Time difference is less than 300 seconds"

     else 
       echo "Time difference is more than 300 seconds"
   fi

done

답변2

여기에서 현재 날짜/시간과 파일의 각 날짜의 차이(초)를 확인할 수 있습니다.

sed -rn '/([[:alpha:]]{3} ){2}([ [:digit:]]{2}[ :]){4}/ s/^.*\|[[:space:]]*//p' file | date +"echo \$(( $NOW - %s ))" -f- | sh
109431
109431

출력 형식과 이를 처리하는 방법을 지정해야 합니다.

관련 정보