我有一个日志文件,保存了特定的日期。我想将特定时间和日期范围内的日志条目提取到另一个文件中。
例如:从 2014-12-04 00:00:00 到 2014-12-04 17:00:00 的所有条目
答案1
尝试 egrep:
pttrn="2014-12-04 0[0-9]"
pttrn="${pttrn}|2014-12-04 1[0-6]"
pttrn="${pttrn}|2014-12-04 17:00:00"
egrep "${pttrn}" <logfile>
egrep 模式包含三个部分。第一部分抓取从 00:00:00 到 09:59:59 的所有内容。第二部分抓取从 10:00:00 到 16:59:59 的所有内容,第三部分抓取 17:00:00 的所有内容。
答案2
如果你想要 4 分钟间隔的日志,
grep "01/APR/2014:16:3[5-9]" logfile
将返回 2014 年 4 月 1 日 16:35 至 16:39 之间的所有日志行。
假设您需要从 2014 年 9 月 17 日开始的过去 5 天的数据,您可以使用以下命令:
grep "1[3-7]/Sep/2011" logfile
希望这能有所帮助,
答案3
您可以选择起始行和结束行,例如sed
:
sed -n '/Dec 5 11:00/,/Dec 5 12:00/p' /var/log/daemon.log
这将打印从第一行Dec 5 11:00
到(包括)第一行 的所有行Dec 5 12:00
。这假设日志是按时间顺序排列的(即所有行都按时间顺序排列)。 是-n
为了抑制打印每一行的默认操作。
答案4
假设您位于existingfile.log存在的目录中。
$ egrep "(2014-12-04 00:*|2014-12-04 17:00:00)" existingfile.log >> /home/newfile.txt