如何用awk格式化日志文件为YYYY-MM-DD,value格式?
完善AWK命令实现4G基站温度日志转CSV格式
直接用以下AWK命令即可完成格式转换:
awk 'BEGIN{print "date,temperature"} /\[([0-9]{4}-[0-9]{2}-[0-9]{2})/{date=substr($1,2,10)} $3~/^[0-9]+$/{print date","$3}' /log/msg/sched/4G-Fan-Temperature-JZ/2023-06-2[89]*_eNB_618159_table.log
命令说明
- BEGIN块:脚本启动时先输出CSV表头
date,temperature - 提取日期:匹配日志中带时间戳的行(格式为
[YYYY-MM-DD HH:MM:SS]),通过substr($1,2,10)从行首的[YYYY-MM-DD中截取10位日期字符串,存入变量date - 提取温度并输出:匹配第三列为纯数字的行(也就是表格中的温度数据行,比如
ATIDF eNB_618159 37),将之前提取的日期与温度值用逗号拼接后输出
为什么之前的命令无效?
你之前的命令会输出所有行的文件名和第三列,而日志中大部分行是空行、表头或者注释行,这些行的第三列要么为空要么是字符串(比如temperature),导致输出了大量无效内容。新命令通过过滤有效数据行,只提取需要的日期和温度值,直接得到目标格式。
执行后输出结果:
date,temperature 2023-06-28,37 2023-06-29,38
内容的提问来源于stack exchange,提问作者HattrickNZ
相关产品推荐
相关产品推荐

