需要帮助从日志文件中提取数据

时间:2016-03-18 21:14:36

标签: unix awk sed grep

寻求帮助从以下日志文​​件中提取数据。

记录数据:

function boo($foo){
    echo $foo;
}
boo('bar'); // output: bar

代码:

INFO  : Partition test.t_abc_cdfn_gprs{schdate_year=2016, schdate_month=02, schdate_day=17, schtime_hour=01} stats: [numFiles=0, numRows=4265004, totalSize=0, rawDataSize=0]
INFO  : Partition test.t_abc_glob_gprs{year=2016, month=02, day=17} stats: [numFiles=0, numRows=4265004, totalSize=0, rawDataSize=0]
INFO  : Partition test.t_abc_part_gprs{part1=2016, part2=02} stats: [numFiles=0, numRows=4265004, totalSize=0, rawDataSize=0]*

我需要提取的值只能是年/月/日,或者甚至可能是样本日志条目中也提到的不同格式,但是这些值将用花括号和变量括起来,如schdate = 2016等......

需要输出:

echo "INFO  : Partition test.t_abc_cdfn_gprs{schdate_year=2016, schdate_month=02, schdate_day=17, schtime_hour=16} stats: [numFiles=0, numRows=16123348, totalSize=0, rawDataSize=0]" | sed -n '/{/{s/.*{//;s/\}/,/;p}' | awk -F':' '{print $1}' | sed 's/stats//g' | sed 's%,%/%g'

1 个答案:

答案 0 :(得分:0)

使用GNU sed:

sed 's/.*{\(.*\)}.*/\1/;s/[^= ]\+=//g;s/, /\//g' file 

输出:

2016/02/17/01
2016/02/17
2016/02

请参阅:The Stack Overflow Regular Expressions FAQ