【发布时间】:2018-04-14 13:11:33
【问题描述】:
我想在两个时间戳之间获取日志,但我没有特定的时间戳。如果我使用以下命令在日志中有特定的时间戳,我可以使用命令 sed 进行获取
sed -rne '/$StartTime/,/$EndTime/'p <filename>
我的查询是,由于我从数据库中获取的特定 StartTime 和 EndTime 可能不存在于日志文件中,因此我必须获取在我使用 >= 和 提供的 StartTime 和 EndTime 附近的时间之间记录。我尝试了以下命令,但它不起作用。
awk '$0>=st && $0<=et' st=$StartTime et=$EndTime <filename>
示例输入和输出
输入
从数据库检索到的时间
开始时间 - 2017-11-02 10:20:00
结束时间 - 2017-11-02 11:20:00
日志中的时间
T1 - 2017-11-02 10:17:44
T2 - 2017-11-02 11:19:32
输出: T1 和 T2 之间的整个日志文本
样本日志
2017-03-03 10:43:18,736 [main] WARN - ORACLE_HOSTNAME=xxxxxxxxxx[OVERRIDES:
xxxxxxxxxxxxxxxx]
2017-03-03 10:43:18,736 [main] WARN - NLS_DATE_FORMAT=DD-MON-YYYY
HH24:MI:SS [OVERRIDES: DD-MON-YYYY HH24:MI:SS]
2017-03-03 10:43:18,736 [main] WARN - xxxxUsername=MDMPIUSER [OVERRIDES: MDMPIUSER]
2017-03-03 10:43:18,736 [main] WARN - BUNDLE_GEMFILE=uri:classloader://installer/Gemfile [OVERRIDES: uri:classloader://installer/Gemfile]
2017-03-03 10:43:18,736 [main] WARN - TIMEOUT=900 [OVERRIDES: 900]
2017-03-03 10:43:18,736 [main] WARN - SHLVL=4 [OVERRIDES: 4]
2017-03-03 10:43:18,736 [main] WARN - HISTSIZE=1000 [OVERRIDES: 1000]
2017-03-03 10:43:18,736 [main] WARN - JAVA_HOME=/usr/java/jdk1.8.0_60/jre [OVERRIDES: /usr/java/jdk1.8.0_60/jre]
2017-03-03 10:43:20,156 [main] WARN - APP_PROPS=/home/xxx/conf/appProperties [OVERRIDES: /home/xxx/conf/appProperties]
【问题讨论】:
-
样本输入输出
-
从数据库中检索的输入时间 StartTime - 2017-11-02 10:20:00 EndTime - 2017-11-02 11:20:00 日志 T1 中存在的时间 - 2017-11-02 10 :17:44 T2 - 2017-11-02 11:19:32 输出:T1 和 T2 之间的整个日志文本
-
如您所见,cmets 不太适合传达格式,请改为编辑您的问题
-
@AkashGujarathi,请在代码标签中使用示例输入和预期输出来编辑您的问题。
-
尚未添加用于输入和输出的代码标签,但现在已在问题本身中对其进行了格式化和编辑,因此易于理解。给您带来不便,敬请见谅