2011-09-30 78 views
1

我正在使用cURL來刮取網頁並檢查某個日期值的Bash腳本(使用Cygwin)。我的捲曲和grep調用導致以下行:解析日期並檢查它在Bash中的最近時間

<span style="float:right">Last Update: 9/30/2011 3:16:31 AM</span><p>

我需要的日期做的是檢查它是否是在最近n天。什麼是最好的方法來解決這個問題,我應該如何解析日期?

+0

見HT tp://stackoverflow.com/questions/5655026/date-calculation-using-gnu-date的一般想法。祝你好運。 – shellter

回答

2

喜歡的東西:

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!" 
0

我會說絕對最好的方法是用另一種語言解析它,例如Perl,因爲解析出日期會更容易。如果您寧願堅持使用Bash,請檢查man date中的​​選項。

+0

GNU日期命令令人驚訝地有能力。 –

1

'日期'程序應該能夠解析日期格式。例如:

% 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