linux awk高级应用实例

2019-09-23 09:17:33王冬梅

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 "tt***CAMPAIGN 1998 CONTRIBUTIONS***n"
    print "---------------------------------------------------------------------------------n"
    print " NametttPHonetttJan |tFeb |tMAR |tTotal Donated"
    print "---------------------------------------------------------------------------------n"
    }
 
{tot=$3+$4+$5}
{Ttot+=tot}
{print $1,"t"$2"tt"$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"ttSUMMARY"
    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 "." 
}