实例文件:
1.23 45
fsd 34
1.4343 56
45 65
we 56
34.67
目标:
把第一列为浮点数的第二列求平均值
awk命令如下
cat test| awk 'BEGIN{total=0;len=0}{if($1~/^[0-9]+\.[0-9]*/){total=total+$2;len=l+1}}END{print total/len}'
命令解释如下
1. awk [-参数 变量] 'BEGIN{初始化}条件类型1{动作1}条件类型2{动作2}END{最后输出}
2. $1~/^[0-9]+\.[0-9]*/表示$1与“/ /”里面的正则表达式进行匹配,若匹配,则total加上$1,且len自增,即数目加1.“^[0-9]+\.[0-9]*”是个正则表达式,“^[0-9]”表示以数字开头,“\.”是转义的意思,表示“.”为小数点的意思。“[0-9]*”表示0个或多个数字)