猪的日志分析

时间:2017-06-27 06:39:25

标签: regex apache-pig hadoop2 log-analysis

我有一个.txt文件,如下所示:

2017-06-22 23:19:05,758 use database stocks
2017-06-22 23:21:27,056 CREATE TABLE stocksdata ( stock_exchange string,

stock_symbol string, date TIMESTAMP,

我写的正则表达式是^(\\d{4}-\\d{2}-\\d{2})\\s+(\\d{2}:\\d{2}:\\d{2}),(\\d{3})\\s((?i)(create|select|use).*)$

但我的输出是

2017-06-22 23:19:05,758 use database stocks
2017-06-22 23:21:27,056 CREATE TABLE stocksdata ( stock_exchange string,

未在输入的下一行中输入行 stock_symbol字符串,日期TIMESTAMP,。我也需要捕捉这一行。

2 个答案:

答案 0 :(得分:0)

尝试使用以下模式:

^(\d{4}-\d{2}-\d{2})\s+(\d{2}:\d{2}:\d{2}),(\d{3})\s((?i)(create|select|use)[\s\S]*)$

我最后用.*替换了[\s\S]*,因为后者消耗了新的行。

答案 1 :(得分:0)

最后,这个表达式已经解决了

(适用\ d {4} - \ d {2} - \ d {2})\ S +(\ d {2}:\ d {2}:\ d {2}),(\ d {3})\ S(\ W {4})\ S()(()(创建\ S |选择\ S |使用\ S)。 \ S \。 S'\ d。 \ S \ d)*)

感谢您的回复