【问题标题】:Extract logs between time frame with non specific time stamp using bash使用 bash 在具有非特定时间戳的时间范围内提取日志
【发布时间】:2018-04-14 13:11:33
【问题描述】:

我想在两个时间戳之间获取日志,但我没有特定的时间戳。如果我使用以下命令在日志中有特定的时间戳,我可以使用命令 sed 进行获取

 sed -rne '/$StartTime/,/$EndTime/'p <filename>

我的查询是,由于我从数据库中获取的特定 StartTimeEndTime 可能不存在于日志文件中,因此我必须获取在我使用 >= 和 提供的 StartTimeEndTime 附近的时间之间记录。我尝试了以下命令,但它不起作用。

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,请在代码标签中使用示例输入和预期输出来编辑您的问题。
  • 尚未添加用于输入和输出的代码标签,但现在已在问题本身中对其进行了格式化和编辑,因此易于理解。给您带来不便,敬请见谅

标签: bash shell awk sed grep


【解决方案1】:

你可以试试

awk -v start="$StartTime" -v end="$EndTime" '
function fonct(date)
{
  gsub(/-|,| |:/,"",date)
  return date
}
BEGIN{
  start=fonct(start)
  end=fonct(end)
}
{
  a=fonct($1$2)
  if (a>=start && a<=end)print $0
}' infile

【讨论】:

    猜你喜欢
    • 2020-08-09
    • 2013-09-10
    • 2020-11-30
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 2022-07-16
    • 1970-01-01
    • 2019-08-08
    相关资源
    最近更新 更多