我的日志文件是,
116.48.29.143---[01/oct/2013:20:28:21+0530]“get/test.php http/1.1”200 749“-”mozilla/4.0(兼容;msie 6.0;windows nt 5.1;sv1。net clr 1.1.4322“)
145.89.87.211---[01/oct/2013:20:28:21+0530]“get/test.php http/1.1”200 613“-”mozilla/4.0(兼容;msie 6.0;windows nt 5.1;sv1。net clr 1.1.4322“)
REGISTER file:/home/hadoop/lib/pig/piggybank.jar;
DEFINE EXTRACT org.apache.pig.piggybank.evaluation.string.EXTRACT();
DEFINE CustomFormatToISOorg.apache.pig.piggybank.evaluation.datetime.convert.CustomFormatToISO();
DEFINE ISOToUnix org.apache.pig.piggybank.evaluation.datetime.convert.ISOToUnix();
DEFINE DATE_TIME org.apache.pig.piggybank.evaluation.datetime.DATE_TIME();
DEFINE FORMAT_DT org.apache.pig.piggybank.evaluation.datetime.FORMAT_DT();
DEFINE FORMAT org.apache.pig.piggybank.evaluation.string.FORMAT();
A = LOAD 'input' USING TextLoader AS (line:chararray);
B = FOREACH A GENERATE FLATTEN (REGEX_EXTRACT_ALL(line,'^(\\S+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] "(.+?)" (\\S+) (\\S+) "([^"]*)" "([^"]*)"') ) AS (remoteAddr:chararray, remoteLogname: chararray, user: chararray, time: chararray, request: chararray, status: int, bytes_string: chararray, referrer: chararray, browser: chararray);
我的问题是提取会议记录,我的意思是从[01/oct/2013:20:28:21+0530]我只需要得到28:21
我怎么才能提取出来??
2条答案
按热度按时间iyr7buue1#
您已经知道如何编写正则表达式了,那么为什么不修改现有的正则表达式或编写新的正则表达式呢?这里有一个新的:
wvt8vs2t2#
我为这种应用程序编写了一个特殊的清管器装载器。这使得apachehttpd日志文件的解析更加容易。
您可以在pig应用程序中使用如下方式:
您可以在此处下载:https://github.com/nielsbasjes/logparser