linux awk高級應(yīng)用實例
今天看到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
需要的結(jié)果如下:
***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 "." }
相關(guān)文章
linux shell中 if else以及大于、小于、等于邏輯表達式介紹
在linux shell編程中,大多數(shù)情況下,可以使用測試命令來對條件進行測試,這里簡單的介紹下,方便需要的朋友2013-02-02shell產(chǎn)生隨機數(shù)七種方法的實現(xiàn)
這篇文章主要介紹了shell產(chǎn)生隨機數(shù)七種方法的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Shell中printf和test命令的實際應(yīng)用詳解
本文主要介紹了Shell中printf和test命令的實際應(yīng)用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09centos 設(shè)置定時任務(wù)執(zhí)行指定腳本的方法
下面小編就為大家?guī)硪黄猚entos 設(shè)置定時任務(wù)執(zhí)行指定腳本的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02Shell命令行中特殊字符與其轉(zhuǎn)義詳解(去除特殊含義)
這篇文章主要給大家詳細介紹了Shell命令行中特殊字符與其轉(zhuǎn)義(去除特殊含義)的相關(guān)資料,文中介紹的很詳細,相信對大家具有一定的參考價值,有需要的朋友們下面來一起看吧。2017-02-02