猪拉丁Regex_extract_All

时间:2016-11-24 10:07:05

标签: apache-pig

我是猪的新手。我需要提取catalina日志,格式就像下面一行。我需要我的程序使用一个模式,它可以读取从INFO开始的下一行,但它不会这样做。

A = LOAD 'catalina. USING TextLoader AS (line:chararray);  
B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'^([a-zA-z]{3}\\s[0-9]{1,2},\\s[0-9]{4}\\s[0-9]{1,2}:[0-9]{2}:[0-9]{2}\\s[A-Z]{2})(.*)INFO:(.*)$'))

STORE B IN 'output' ;

输入:

Nov 3, 2016 11:00:06 AM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 470 ms.

1 个答案:

答案 0 :(得分:0)

你的问题是INFO之前和之后的两个(。)捕获。你想要这个:

^([a-zA-z]{3}\s[0-9]{1,2},\s[0-9]{4}\s[0-9]{1,2}:[0-9]{2}:[0-9]{2}\s[A-Z]{2})\s([\w\.]+)\sINFO:\s(.*)$