如何在unix中与日期进行模式匹配

如何在unix中与日期进行模式匹配

我想从文件中提取最近 1 小时的数据。我写了下面的脚本:

Date="$(date -d -1hour +"%b %d, %Y %l:mi:ss %p")" 
grep "$Date" /tmp/user/file.log  > TMP.log

问题是,当我执行它时,AM 和 PM 时间的数据都出现了。看起来日期格式有一些问题。有人可以帮助我吗,这样,只有当前日期是上午时,才将上午数据添加到TMP.log.

文件。日志内容:

<Dec  4, 2019 10:59:34 AM PST> <Error> <oracle.sdpinternal.messaging.driver.email.inbound.ImapEmailStore> <SDP-26123> <Could not initialize Email Store for: user , server outlook.office365.com, folder INBOX, sslEnabled true
javax.mail.AuthenticationFailedException: AUTHENTICATE failed.
<Dec  4, 2019 10:59:34 PM PST> <Error> <oracle.sdpinternal.messaging.driver.email.inbound.ImapEmailStore> <SDP-26123> <Could not initialize Email Store for: user, server outlook.office365.com, folder INBOX, sslEnabled true
javax.mail.AuthenticationFailedException: AUTHENTICATE failed.

答案1

date -d -1hour +"%b %d, %Y %l:mi:ss %p"输出类似:

Dec 05, 2019  6:mi:ss am # GB
Dec 05, 2019  6:mi:ss AM # US
Dez 05, 2019  6:mi:ss    # DE
déc. 05, 2019  6:mi:ss   # FR

取决于您的区域设置。

但即使是美国格式也与日志文件中使用的格式相去甚远。

尝试

LC_ALL=C date -d -1hour +"%b %e, %Y %r %Z"

(假设您位于美国太平洋时区(例如America/Los_Angeles),%Z通常会扩展到PST)。

这给出了类似的东西:

Dec  4, 2019 10:17:38 PM PST

相关内容