Perl脚本每小时复制带有时间戳的日志并粘贴到不同的文件中

时间:2017-03-29 22:05:59

标签: perl file copy

首先,我对编程非常陌生,所以在编写perl脚本时需要你的帮助才能在windows上执行以下操作。

我有一个带有时间戳(1gb)的大日志文件,因为打开需要花费很多时间而难以阅读日志。所以我的要求是在最后一小时内从较大的日志文件中复制日志并将其粘贴到另一个文件,然后将下一个1小时的数据复制到不同的文件(因此我们将有一天24个文件)。第二天,这些文件中的数据需要重写或删除&创建一个新文件。

示例日志:

09092016-00:02:00,..................
09092016-00:02:08,..................
09092016-00:02:15,..................
09092016-00:02:18,..................

请帮助我,并提前感谢您的帮助。

谢谢,

2 个答案:

答案 0 :(得分:0)

更简单的解决方案是使用split命令将文件拆分为可管理的大小。

split -l 1000 logfile

将日志文件拆分为每个1000行的较小文件。 然后,您可以使用grep查找包含所需日期的文件。

grep 09092016 logfile*

答案 1 :(得分:0)

例如:

logfile="./log"
while read -r d m y h; do
    grep "^$d$m$y-$h" "$logfile" > "partial-${y}${m}{$d}-${h}.log"
done < <(sed -n 's/\(..\)\(..\)\(....\)-\(..\)\(.*\)/\1 \2 \3 \4/p' "$logfile" | sort -u)

简单,但高效。它为拆分读取整个大日志文件25x。 (1x用于收集日志中的现有ddmmyyyy-hh行,并且对于每个不同的找到的日期时间再次收集。)