现在的位置: 首页 > 综合 > 正文

awk

2013年08月17日 ⁄ 综合 ⁄ 共 1100字 ⁄ 字号 评论关闭

#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 



打印某行的某列:

[root@bogon diff]# cat A.txt 
111 21
222
333
444
555
666
777
888



[root@bogon diff]# awk '{if(NR==5)print $1}' A.txt  
555

抱歉!评论已关闭.