我正在使用cURL來刮取網頁並檢查某個日期值的Bash腳本(使用Cygwin)。我的捲曲和grep調用導致以下行:解析日期並檢查它在Bash中的最近時間
<span style="float:right">Last Update: 9/30/2011 3:16:31 AM</span><p>
我需要的日期做的是檢查它是否是在最近n天。什麼是最好的方法來解決這個問題,我應該如何解析日期?
我正在使用cURL來刮取網頁並檢查某個日期值的Bash腳本(使用Cygwin)。我的捲曲和grep調用導致以下行:解析日期並檢查它在Bash中的最近時間
<span style="float:right">Last Update: 9/30/2011 3:16:31 AM</span><p>
我需要的日期做的是檢查它是否是在最近n天。什麼是最好的方法來解決這個問題,我應該如何解析日期?
喜歡的東西:
DATESTRING="$(sed -e 's/.*Last Update: \([^<]*\)<.*/\1/' $MYINPUT)"
UPDATE=$(date -d "$DATESTRING" +%s)
EPOCH=$(date -d "-$n days" +%s)
test "$UPDATE" -ge "$EPOCH" && echo "It's new!"
我會說絕對最好的方法是用另一種語言解析它,例如Perl,因爲解析出日期會更容易。如果您寧願堅持使用Bash,請檢查man date
中的選項。
GNU日期命令令人驚訝地有能力。 –
'日期'程序應該能夠解析日期格式。例如:
% date -d '9/30/2011 3:16:31 AM'
Fri Sep 30 03:16:31 PDT 2011
所以,你可以使用「日期」將其轉換成可用在bash的東西(整數,秒從epoch):
parseddate=$(something that extracts just the date from the line ...)
date -d "$parseddate" +%s
然後比較,爲的結果
date -d '3 days ago' +%s
見HT tp://stackoverflow.com/questions/5655026/date-calculation-using-gnu-date的一般想法。祝你好運。 – shellter