我有一个日志文件,想将其切成 15 分钟的副本。在日志文件中,各行以以下开头:
dd mmm yyyy hh:mm:ss,xxx
例如
12 Feb 2013 16:05:02,xxx log text...
该文件每小时轮换一次,因此我想获取日志文件的副本,将其分成 15 分钟的日志记录,并有 4 个日志文件。
答案1
如果所有行的格式都正确,那么
awk -F: '{print >int($2/15)*15 ".log"}' inputfile
将生成文件 0.log、15.log、30.log 和 45.log。
它的工作原理是使用冒号作为分隔符进行拆分,因此 的第二个字段dd mm yyyy hh:mm:ss,xxx
是mm
。我们将其除以 15,取整数部分,然后乘以 15 以获得mm
每刻钟开始时的值。然后我们附加字符串".log"
。然后我们告诉 awk 将当前行打印到该文件。
答案2
AWK:
cat input |
awk -F ':' '{if ($2 < 15) {print $0 > "15.log"} else print}' |
awk -F ':' '{if ($2 < 30) {print $0 > "30.log"} else print}' |
awk -F ':' '{if ($2 < 45) {print $0 > "45.log"} else print}' |
cat > 60.log