我有一个.log文件,该文件在每个月的月初重新开始,每条消息都以以下时间戳格式开头:01-07-2016 00:00:00:868|
每天有数千条消息,我想创建一个简短的脚本,可以确定日期何时递增,并将每个日期输出到只有当天数据的新文件。我不熟练使用bash,但我喜欢使用sed或awk,因为它对我工作中的流程自动化和创建报告非常有用。
答案 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