从日志文件中提取日期 [英] Extract date from log file

查看:134
本文介绍了从日志文件中提取日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个日志行是这样的:

I have a log line like this:

Tue Dec  2 10:03:46 2014 1 10.0.0.1 0 /home/test4/TEST_LOGIN_201312021003.201412021003.23872.sqlLdr b _ i r test4 ftp 0 * c

和我可以打印此行像这样的日期值。

And I can print date value of this line like this.

echo $log | awk '{print $9}' | grep -oP '(?<!\d)201\d{9}' | head -n 1

我有这样的另一个日志行了,我怎么能打印的日期值?

I have another log line like this, how can I print date value?

Tue Dec  9 10:48:13 2014 1 10.0.0.1 80 /home/DATA1/2014/12/11/16/20/blablabla_data-2014_12_11_16_20.txt b _ i r spy ftp 0 * c

我想我的awk / grep的解决方案,但它打印 201 9 后数 201 当看到 201

子文件夹和数据的名称是一样的:

Sub folders and data name is the same:

2014/12/11/16/20 --> 11 Dec 2014 16:20 <-- blablabla_data-2014_12_11_16_20.txt

请注意: /家庭/ DATA1 不是一成不变的。 年/月/日/小时/分钟是静态的。

note: /home/DATA1 is not static. year/month/day/hour/minute is static.

推荐答案

由于在路径的格式为: /.../ YYYY / MM / DD / HH / MM /文件名,您可以用 201D / DD / DD / DD / DD 的grep 前pression匹配日期块:

As the format in the path is /.../YYYY/MM/DD/HH/MM/filename, you can use 201D/DD/DD/DD/DD in the grep expression to match the date block:

$ log="Tue Dec  9 10:48:13 2014 1 10.0.0.1 80 /home/DATA1/2014/12/11/16/20/blablabla_data2_11_16_20.txt b _ i r spy ftp 0 * c"
$ echo "$log" | grep -oP '(?<!\d)201\d/\d{2}/\d{2}/\d{2}/\d{2}'
2014/12/11/16/20

和最终删除斜线与 TR

$ echo "$log" | grep -oP '(?<!\d)201\d/\d{2}/\d{2}/\d{2}/\d{2}' | tr -d '/'
201412111620

这篇关于从日志文件中提取日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆