![200个日志文件的开始和结束时间](https://linux22.com/image/159825/200%E4%B8%AA%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E7%9A%84%E5%BC%80%E5%A7%8B%E5%92%8C%E7%BB%93%E6%9D%9F%E6%97%B6%E9%97%B4.png)
我有大约 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}
反而。