我有一个带有长变量字符串的日志,我试图从一个数字中获取最小值、最大值和平均值。
字符串示例
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)
“时间:* 毫秒”在每一行中都是恒定的,但字段位置正在变化。我需要那个毫秒数的最大值、最小值和平均值。
将 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)