计算特定平均值

-1 awk text-processing

我有一个带有长变量字符串的日志,我试图从一个数字中获取最小值、最大值和平均值。

字符串示例

date time from Time: 100 ms to status code: 
date time Time: 1050 ms status code IP
date time IP Time: 2 ms status code destination
Run Code Online (Sandbox Code Playgroud)

“时间:* 毫秒”在每一行中都是恒定的,但字段位置正在变化。我需要那个毫秒数的最大值、最小值和平均值。

αғs*_*нιη 7

将 GNU awk 用于FPAT“一个正则表达式(作为字符串),它告诉 gawk 根据与正则表达式匹配的文本创建字段。 ”):

awk -v FPAT='Time:[[:blank:][:digit:]]+ms' '
          { split($1, tmp); sum+=tmp[2] }
NR==1     { min=max=tmp[2] }
min>tmp[2]{ min=tmp[2] }
max<tmp[2]{ max=tmp[2] }

END{ print min, max, sum/NR }' infile
Run Code Online (Sandbox Code Playgroud)

输出;

2 1050 384
Run Code Online (Sandbox Code Playgroud)