我正在解析一些日志文件,只想提取日期和时间数据。日志文件如下所示:
2017-03-01 12:00:15.896 Sync DeliveryContacts: 00:00.011(00.011) end
2017-03-01 12:00:16.473 SyncTables(): 00:00.293(00.293) end
2017-03-01 12:02:48.636 00:00.000(00.000) end
编辑 - 这也是文件中可能的一行:
2017-03-01 12:00:15.896 Sync Delivery Contacts: 00:00.011(00.011) Started with predefined delay (10:00.000) end
我想得到 3 个这样的列:
[YYYY-MM-DD] [hh:mm:ss.000] [mm:ss.000]
或者:
2017-03-01 12:00:15.896 00:00.011
2017-03-01 12:00:16.473 00:00.293
2017-03-01 12:02:48.636 00:00.000
字符串将始终以 DateTime(前 2 列)开头,第二次数据将始终为 9 个字符长。
我试过了:
fgrep "end" *.txt -a /
| awk '{ print $1 " " $2 " " $4 }'
但这仅适用于我的示例中的第二行。
我想我可以用 awk 获得前 2 列,但不知道如何获得 3 列。
使用单目瞪口呆的方法:
awk '{r=""; for(i=3;i<=NF;i++){ r=r$i };
match(r, /\<([0-9]{2}:[0-9]{2}\.[0-9]{3})\(/, a); print $1,$2,a[1];}' file
输出:
2017-03-01 12:00:15.896 00:00.011
2017-03-01 12:00:16.473 00:00.293
2017-03-01 12:02:48.636 00:00.000
for(i=3;i<=NF;i++){ r=r$i };
- 从第三个字段开始连接字段值
match(r, /([0-9]{2}:[0-9]{2}.[0-9]{3})\(/, a)
- 匹配[mm:ss.000]
“收集”字段数据中的时间数据
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句