我想从文件中提取最近 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