如何按天分隔月份的时间戳数据

时间:2016-07-12 18:31:30

标签: bash datetime unix

我有一个.log文件,该文件在每个月的月初重新开始,每条消息都以以下时间戳格式开头:01-07-2016 00:00:00:868|

每天有数千条消息,我想创建一个简短的脚本,可以确定日期何时递增,并将每个日期输出到只有当天数据的新文件。我不熟练使用bash,但我喜欢使用sed或awk,因为它对我工作中的流程自动化和创建报告非常有用。

2 个答案:

答案 0 :(得分:0)

下面的脚本会将输入日志文件拆分为多个文件,并将日期添加为输入文件名的后缀:

<强> split_logfile_by_date

#!/bin/bash

exec < $1
while read line
do
    date=$(echo $line|cut -d" " -f 1)
    echo $line >> $1.$date
done

示例:

$ ls
log
$ split_logfile_by_date log
$ ls
log  log.01-07-2016  log.02-07-2016  log.03-07-2016

答案 1 :(得分:0)

awk '{log = FILENAME "." $1; print > log}' logfile

这会将所有01-07-2016条记录写入文件logfile.01-07-2016