** linux
# awk
'{sum[$1]+=$2}END{for(c in sum){print c,sum[c]}}'
輸入文件名
shell
在Shell中,咱們能夠用awk實現按列求和的功能,很是簡單
bash
1. 簡單的按列求和ide
# cat num.txt | awk '{sum += $1} END {print sum}'spa
2.對符合某些條件的行,按列求和code
# cat num.txt | awk ' /aaa/ {sum += $1} END {print sum}'orm
3. 列求和: cat you.txt |awk '{a+=$1}END{print a}'
4. 列求平均值:cat you.txt |awk '{a+=$1}END{print a/NR}'
5.列求最大值:cat you.txt |awk 'BEGIN{a=0}{if ($1>a) a=$1 fi}END{print a}'
設定一個變量開始爲0,遇到比該數大的值,就賦值給該變量,直到結束。
6. 求最小值: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}'