AWK求和、平均值、最值

--AWK求和、平均值、最值
------------------------2014/02/14 
打包当前目录下的所有文件
ls | awk '{ print "tar zcvf "$0".tar.gz " $0|"/bin/bash" }' 

取范围
[root@VM-202 zhuo]# echo "abc#1233+232@jjjj?===" |awk -F '[#@]' '{print $2}'
1233+232 
[root@VM-202 zhuo]# echo "abc#1233+232@jjjj?===" |awk -F '[@?]' '{print $2}'
jjjj
 
awk '/^[^$]/ {print $0}' test.txt                匹配非空行
awk '/^[^zhuo]/ {print $0}' test.txt        匹配非包含zhuo的
 
替换(将:替换成#)
[root@VM-202 zhuo]# echo "zhuo:x:503:504::/home/zhuo:/bin/bash" |awk 'gsub(/:/,"#") {print $0}'
zhuo#x#503#504##/home/zhuo#/bin/bash
 
you.txt文档内容
 
1
2
3
4
 
 
列求和: cat you.txt |awk '{a+=$1}END{print a}'
 
列求平均值:cat you.txt |awk '{a+=$1}END{print a/NR}'
 
列求最大值:cat you.txt |awk 'BEGIN{a=0}{if ($1>a) a=$1 fi}END{print a}' 
设定一个变量开始为0,遇到比该数大的值,就赋值给该变量,直到结束。
 
求最小值:cat you.txt |awk 'BEGIN{a=11111}{if ($1<a) a=$1 fi}END{print a}'    反之
 
求全文的最值
例:求test.txt的最值
 
12 34 56 78
24 65 87 90
76 11 67 87
100 89 78 99
for i in `cat test.txt` ;do echo $i; done |sort |sed -n '1p;2p'
 
例2:同样是test.txt
求总和:for i in `cat you.txt`;do echo $i ;done |awk '{a+=$1}END{print a}'
 
例3:
A     88
B     78
B     89
C     44
A     98
C     433
要求输出:A:88;98
                 B:78;89
                 C:44;433
 
awk '{a[$1]=a[$1]" "$2}END{for(i in a)print i,a[i]}' test.txt |awk '{print $1":",$2";",$3}'
posted @   胡.杰  阅读(4561)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示