linux awk高级应用实例
今天看到unix shell 范例精解上有道awk的题目 做了以后拿来和大家分享下
处理前的文档:
mike harrington:(510) 548-1278:250:100:175
christian dobbins:(408) 538-2358:155:90:201
susan dalsass:(206) 654-6279:250:60:50
archie mcnichol:(206) 548-1348:250:100:175
jody savage:(206) 548-1278:15:188:150
guy quigley:(916) 343-6410:250:100:175
dan savage:(406) 298-7744:450:300:275
nancy mcneil:(206) 548-1278:250:80:75
john goldenrod:(916) 348-4278:250:100:175
chet main:(510) 548-5258:50:95:135
tom savage:(408) 926-3456:250:168:200
elizabeth stachelin:(916) 440-1763:175:75:300
需要的结果如下:
***campaign 1998 contributions***
name phone jan | feb | mar | total donated
---------------------------------------------------------------------------------
mike harrington (510) 548-1278 250 100 175 525
christian dobbs (408) 538-2358 155 90 201 446
susan dalsass (206) 654-6279 250 60 50 360
archie mcnichol (206) 548-1348 250 100 175 525
jody savage (206) 548-1278 15 188 150 353
guy quigley (916) 343-6410 250 100 175 525
dan savage (406) 298-7744 450 300 275 1025
nancy mcneil (206) 548-1278 250 80 75 405
john goldenrod (916) 348-4278 250 100 175 525
chet main (510) 548-5258 50 95 135 280
tom savage (408) 926-3456 250 168 200 618
elibeth stachel (916) 440-1763 175 75 300 550
summary
-----------------------------------------------------------------------------------
the campan received atotal of $6137 for this quarter
average donation for the 12 contributors was $511.417.
the highest contribution was $450.
the lowest contribution was $15.
代码如下:
begin{fs=":";low1=300;low2=400;low3=500 ofs="\t" print "\t\t***campaign 1998 contributions***\n" print "---------------------------------------------------------------------------------\n" print " name\t\t\tphone\t\t\tjan |\tfeb |\tmar |\ttotal donated" print "---------------------------------------------------------------------------------\n" } {tot=$3+$4+$5} {ttot+=tot} {print $1,"\t"$2"\t\t"$3" \t"$4" \t"$5" \t"tot} {avg=ttot/12} {high1=(high1>$3)?high1:$3} {high2=(high1>$4)?high1:$4} {high3=(high1>$5)?high1:$5} {max12=(high1>high2)?high1:high2} {max23=(high2>high3)?high2:high3} {max=(max12>max23)?max12:max23} {low1=(low1<$3)?low1:$3} {low2=(low1<$4)?low1:$4} {low3=(low1<$5)?low1:$5} {min12=(low1<low2)?low1:low2} {min23=(low2<low3)?low2:low3} {min=(min12<min23)?min12:min23} end{ print "-----------------------------------------------------------------------------------" print"\t\tsummary" print "-----------------------------------------------------------------------------------" printf "the campan received atotal of $";printf ttot; print " for this quarter" printf "average donation for the 12 contributors was $"; printf avg ;print"." printf "the highest contribution was $";printf max;print "." printf "the lowest contribution was $";printf min;print "." }
下一篇: Linux启动过程详细介绍