#cat filename.txt:
www|200|date1
Medie|400|date2
DV|800|date3
awk -F"|" '{(total+=$2)};END{print total}' filename.txt
awk -F "|" '{total+=$2}END{print total}' filename.txt
//Output:
1400
在Shell中,我们可以用awk实现按列求和的功能,非常简单。看下面的例子:
1.简单的按列求和
[linux@test /tmp]$ cat test
123.52
125.54
126.36
[linux@test /tmp]$ awk '{sum += $1};END {print sum}' test
375.42
2.对符合某些条件的行,按列求和
[linux@test /tmp]$ cat test
aaa 123.52
bbb 125.54
aaa 123.52
aaa 123.52
ccc 126.36
对文件test中 第一列为aaa的行求和
[linux@test /tmp]$ awk '/aaa/ {sum += $2};END {print sum}' test
370.56
awk 处理文本还是很方便的。
# cat lastlog
1008520650 天津 http://www.aibang.com/abc/a.jpg 0.015
1008522118 天津 http://www.aibang.com/abc/a.jpg 0.015
1008520646 天津 http://www.aibang.com/abc/a.jpg 0.015
1999853994 沈阳 http://www.aibang.com/abc/a.jpg 0.015
1008520650 天津 http://www.aibang.com/abc/a.jpg 0.015
1008522118 天津 http://adad.ada.con/da 0.018
1008520646 天津 http://adadad/dad/dd.abc 0.016
1999853994 沈阳 http://www.sohu.com/abc/d.jif 1.14
# cat lastlog|grep "天津"|awk '{print$NF}' |awk '{sum += $1};END{print sum}'
0.094
我的NF是最后一个字段
#awk '/天津/{sum += $NF};END {print sum}' lastlog
打印某行的某列:
111 21
222
333
444
555
666
777
888
555