从日志文件中提取日期 [英] Extract date from log file
本文介绍了从日志文件中提取日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个日志行是这样的:
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屋!
查看全文