Shell-Script

從命令響應中挑選日期

  • August 4, 2020

我有一個看起來像這樣的命令響應:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

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

每組字元和管道之間有很多製表符空格。目的是從響應中挑選出日期,然後將其與目前時間進行比較,找出差異並確保不超過 300 秒。這是我第一次製作 shell 腳本,我不確定它是如何工作的。

我嘗試使用 grep 來獲取整行。有沒有辦法忽略字元之間的空格?如何將該日期格式轉換為正常日期格式?

#!/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

在這裡,您可以獲得目前日期/時間與文件中每個日期的差異,以秒為單位:

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

輸出格式,以及如何處理它,是要指定的……

引用自:https://unix.stackexchange.com/questions/476449