200个日志文件的开始和结束时间

200个日志文件的开始和结束时间

我有大约 200 个目录。每个目录仅包含一个日志文件。
日志文件的第一行指定特定作业的开始时间,最后一行指定作业的结束时间。

我可以将目录名称导出到 CSV 文件。我需要帮助从每个目录内的日志文件捕获开始和结束时间。

请分享命令/循环。这是一个例子。

Direcotry PS-PR-9928883838383 
log name PS-PR-9928883838383.log

在日志中,会有开始的时间戳和最后的时间戳。

  2019-08-29::22:59:13 INFO com.bns.csm.####.####AppHandlerImpl:868 [pool-1-thread-5] #### = /bns/csm/ac_data/workdir/MsgService/####/Apps/####/working/PS-PR-20190829225849147/priceReq_@@@@_PS-PR-20190829225849147_20190830.csv completion confirmation is known by below line 2019-08-29::22:59:22 INFO com.bns.csm.####24 [pool-87-thread-1] THREAD for ### extract with output location = /bns/csm/ac_data/workdir/MsgService/####/Apps/@@@@/working/PS-PR-20190829225849147/priceResponse_@@@@_PS-PR-20190829225849147_20190830.txt: End. –

答案1

尝试这样的事情:

find . -type f -name 'PS-PR-*.log' -exec awk '
  NR==1 { printf "%s,%s,", FILENAME, $1};
  $NF == "End." {print $1}' {} +

您还没有发布日志数据,所以我不确定行末尾的内容是否End.确实存在,或者是否是某些复制和粘贴工件。上面假设它不存在。

如果它真的在那里,那么End.是在倒数第二个字段中,而不是最后一个字段中。所以使用:

$(NF-1) == "End." {print $1}

反而。

相关内容