解析日期并检查 Bash 中的最新日期

发布于 2024-12-07 14:51:29 字数 245 浏览 0 评论 0原文

我正在开发一个 Bash 脚本(使用 Cygwin),它使用 cURL 来抓取网页并检查某个日期值。我的 cURL 和 grep 调用产生以下行:

Last Update: 9/30/2011 3:16:31 AM

我需要对日期做的是检查它是否在过去 n 天内。解决这个问题的最佳方法是什么?我应该如何解析日期?

I'm working on a Bash script (using Cygwin) that uses cURL to scrape a web page and check a certain date value. My cURL and grep calls result in the following line:

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

What I need to do with the date is check if it is within the last n days. What is the best way to approach this, and how should I parse the date?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

故乡的云 2024-12-14 14:51:29

像这样的东西:

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

Something like:

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!"
乙白 2024-12-14 14:51:29

“日期”程序应该能够解析该日期格式。例如:

% date -d '9/30/2011 3:16:31 AM'
Fri Sep 30 03:16:31 PDT 2011

因此,您可以使用“日期”将其转换为 bash 中可用的内容(整数,自纪元以来的秒数):

parseddate=$(something that extracts just the date from the line ...)
date -d "$parseddate" +%s

然后将其与结果进行比较

date -d '3 days ago' +%s

The 'date' program should be able to parse that date format. For example:

% date -d '9/30/2011 3:16:31 AM'
Fri Sep 30 03:16:31 PDT 2011

So, you can use 'date' to convert that to something usable in bash (an integer, seconds since the epoch):

parseddate=$(something that extracts just the date from the line ...)
date -d "$parseddate" +%s

Then compare that to the result of

date -d '3 days ago' +%s
戒ㄋ 2024-12-14 14:51:29

我想说,绝对最好的方法是用另一种语言(例如 Perl)解析它,因为解析日期会更容易。如果您宁愿坚持使用 Bash,请检查 man date 中的 --date 选项。

I would say that the absolute best way is to parse it with another language, for example Perl, since it will be easier to parse out the date. If you'd rather stick with Bash, check the --date option in man date.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文