awk中处理asc码

遇到问题:

server打日志时而没有将uint8的统计字段转换为int,而是直接打出来变成了asc码的值(比如1变成了^A),导致运营脚本无法正常统计,短期无法更新server,只能将日志二次加工


解决思路:

将日志文件中的asc码值转换为对应的正常数值


具体代码:proc.awk

#!/bin/awk -f

BEGIN {
    for (idx = 0; idx < 256; ++idx) {
        ch = sprintf("%c", idx);
        ascii[ch] = idx;
    }
}

{
    if($NF >= "^A" && $NF <= "^Z")
    {
        sum="";
        for(idx = 1; idx < NF; idx++)
        {
            sum=sum" "$idx;
        }
        print sum" "ascii[$NF];
    }
}


参考文献:

http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1244057&page=2

你可能感兴趣的:(awk)