聽聽聽聽聽聽聽 鐢熸垚浠g爜鏈夎澶氭柟娉曪紝姣斿鍙互鐢ㄨ剼鏈璦€錛堜釜浜哄枩嬈㈢敤perl錛夛紝涔熷彲浠ョ敤妯℃澘鎶€鏈€傚彂鐜癹ava閲岄潰宸茬粡鏈夊緢澶氭ā鏉挎妧鏈彲浠ョ洿鎺ヤ嬌鐢ㄤ簡錛屾瘮濡倂elocity銆乫reemaker絳夈€傛垜涓€寮€濮嬫槸鐩存帴鐢╬erl鏉ョ敓鎴愪唬鐮佺殑錛屾柟娉曟瘮杈冨師濮嬶紝灝辨槸瀛楃涓叉嫾鍑戝湪涓€璧楓€?鍚庢潵鍙戠幇鏈夎澶氱殑妯℃澘鎶€鏈彲浠ュ埄鐢ㄣ€傜幇鍦ㄦ墦綆楃敤velocity鏉ョ敓鎴愪唬鐮併€傝涓嶅畾鍙互鐩存帴鐢熸垚DAO銆丅iz銆丅ean銆乆ML絳変竴澶у爢涓滆タ錛屽懙鍛點€傜瓑鏈夌┖瑕佸ソ濂界爺絀朵竴涓嬨€?/p>
聽
NAME
聽聽聽聽聽聽 uniq - remove duplicate lines from a sorted file
SYNOPSIS
聽聽聽聽聽聽 uniq [OPTION]... [INPUT [OUTPUT]]
DESCRIPTION
聽聽聽聽聽聽 Discard all but one of successive identical lines from INPUT (or stan-
聽聽聽聽聽聽 dard input), writing to OUTPUT (or standard output).
聽聽聽聽聽聽 Mandatory arguments to long options are mandatory聽 for聽 short聽 options
聽聽聽聽聽聽 too.
聽聽聽聽聽聽 -c, --count
聽聽聽聽聽聽 prefix lines by the number of occurrences
聽聽聽聽聽聽 -d, --repeated
聽聽聽聽聽聽 only print duplicate lines
聽聽聽聽聽聽 -D, --all-repeated[=delimit-method] print all duplicate lines
聽聽聽聽聽聽 delimit-method={none(default),prepend,separate}聽 Delimiting聽 is
聽聽聽聽聽聽 done with blank lines.
聽聽聽聽聽聽 -f, --skip-fields=N
聽聽聽聽聽聽 avoid comparing the first N fields
聽聽聽聽聽聽 -i, --ignore-case
聽聽聽聽聽聽 ignore differences in case when comparing
聽聽聽聽聽聽 -s, --skip-chars=N
聽聽聽聽聽聽 avoid comparing the first N characters
聽聽聽聽聽聽 -u, --unique
聽聽聽聽聽聽 only print unique lines
聽聽聽聽聽聽 -w, --check-chars=N
聽聽聽聽聽聽 compare no more than N characters in lines
聽聽聽聽聽聽 --help display this help and exit
聽聽聽聽聽聽 --version
聽聽聽聽聽聽 output version information and exit
聽聽聽聽聽聽 A field is聽 a聽 run聽 of聽 whitespace,聽 then聽 non-whitespace聽 characters.
聽聽聽聽聽聽 Fields are skipped before chars.
AUTHOR
聽聽聽聽聽聽 Written by Richard Stallman and David MacKenzie.
REPORTING BUGS
聽聽聽聽聽聽 Report bugs to <bug-coreutils@gnu.org>.
COPYRIGHT
聽聽聽聽聽聽 Copyright 漏 2004 Free Software Foundation, Inc.
聽聽聽聽聽聽 This聽 is聽 free software; see the source for copying conditions.聽There
聽聽聽聽聽聽 is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICU-
聽聽聽聽聽聽 LAR PURPOSE.
SEE ALSO
聽聽聽聽聽聽 The full documentation for uniq is maintained as a Texinfo manual.聽 If
聽聽聽聽聽聽 the info and uniq programs are properly installed at聽 your聽 site,聽 the
聽聽聽聽聽聽 command
聽聽聽聽聽聽 info coreutils uniq
聽聽聽聽聽聽 should give you access to the complete manual.
聽聽聽 a w k鏄竴縐嶇▼搴忚璦€錛屽鏂囨。璧勬枡鐨勫鐞嗗叿鏈夊緢寮虹殑鍔熻兘銆俛wk 鍚嶇О鏄敱瀹冧笁涓渶鍒濊璁¤€呯殑濮撴皬鐨勭涓€涓瓧姣嶈€屽懡鍚嶇殑錛?Alfred V. Aho銆丳eter J. We i n b e rg e r銆丅rian W. Kernighan銆?br />聽聽聽a w k鏈€鍒濆湪1 9 7 7騫村畬鎴愩€? 9 8 5騫村彂琛ㄤ簡涓€涓柊鐗堟湰鐨刟 w k錛屽畠鐨勫姛鑳芥瘮鏃х増鏈寮轟簡涓嶅皯銆俛 w k鑳藉鐢ㄥ緢鐭殑紼嬪簭瀵規枃妗i噷鐨勮祫鏂欏仛淇敼銆佹瘮杈冦€佹彁鍙栥€佹墦鍗扮瓑澶勭悊銆傚鏋滀嬌鐢– 鎴朠 a s c a l絳夎璦€緙栧啓紼嬪簭瀹屾垚涓婅堪鐨勪換鍔′細鍗佸垎涓嶆柟渚胯€屼笖寰堣姳璐規椂闂達紝鎵€鍐欑殑紼嬪簭涔熶細寰堝ぇ銆?br />聽聽聽a w k涓嶄粎浠呮槸涓€涓紪紼嬭璦€錛屽畠榪樻槸L i n u x緋葷粺綆$悊鍛樺拰紼嬪簭鍛樼殑涓€涓笉鍙己灝戠殑宸ュ叿銆俛 w k璇█鏈韓鍗佸垎濂藉錛屾槗浜庢帉鎻★紝騫朵笖鐗瑰埆鐨勭伒媧匯€?br />聽聽聽gawk 鏄疓 N U璁″垝涓嬫墍鍋氱殑a w k錛実awk 鏈€鍒濆湪1 9 8 6騫村畬鎴愶紝涔嬪悗涓嶆柇鍦拌鏀硅繘銆佹洿鏂般€俫awk 鍖呭惈awk 鐨勬墍鏈夊姛鑳姐€?br />
6.1 gawk鐨勪富瑕佸姛鑳?br />
聽聽聽gawk 鐨勪富瑕佸姛鑳芥槸閽堝鏂囦歡鐨勬瘡涓€琛? l i n e )錛屼篃灝辨槸姣忎竴鏉¤褰曪紝鎼滃鎸囧畾鐨勬牸寮忋€傚綋鏌愪竴琛岀鍚堟寚瀹氱殑鏍煎紡鏃訛紝gawk 灝變細鍦ㄦ琛屾墽琛岃鎸囧畾鐨勫姩浣溿€俫awk 渚濇鏂瑰紡鑷姩澶勭悊杈撳叆鏂囦歡鐨勬瘡涓€琛岀洿鍒拌緭鍏ユ枃浠舵。妗堢粨鏉熴€?br />聽聽聽g a w k緇忓父鐢ㄥ湪濡備笅鐨勫嚑涓柟闈細
聽聽聽鈥?鏍規嵁瑕佹眰閫夋嫨鏂囦歡鐨勬煇鍑犺錛屽嚑鍒楁垨閮ㄥ垎瀛楁浠ヤ緵鏄劇ず杈撳嚭銆?br />聽聽聽鈥?鍒嗘瀽鏂囨。涓殑鏌愪竴涓瓧鍑虹幇鐨勯鐜囥€佷綅緗瓑銆?br />聽聽聽鈥?鏍規嵁鏌愪竴涓枃妗g殑淇℃伅鍑嗗鏍煎紡鍖栬緭鍑恒€?br />聽聽聽鈥?浠ヤ竴涓姛鑳藉崄鍒嗗己澶х殑鏂瑰紡榪囨護杈撳嚭鏂囨。銆?br />聽聽聽鈥?鏍規嵁鏂囨。涓殑鏁板€艱繘琛岃綆椼€?br />
6.2 濡備綍鎵цgawk紼嬪簭
聽聽聽鍩烘湰涓婃湁涓ょ鏂規硶鍙互鎵цg a w k紼嬪簭銆?br />聽聽聽濡傛灉gawk 紼嬪簭寰堢煭錛屽垯鍙互灝唃awk 鐩存帴鍐欏湪鍛戒護琛岋紝濡備笅鎵€紺猴細
聽聽聽聽聽聽gawk 'program' input-file1 input-file2 ...
聽聽聽
聽聽 鍏朵腑program 鍖呮嫭涓€浜沺attern 鍜宎 c t i o n銆?br />聽聽聽濡傛灉gawk 紼嬪簭杈冮暱錛岃緝涓烘柟渚跨殑鍋氭硶鏄皢gawk 紼嬪簭瀛樺湪涓€涓枃浠朵腑錛実awk 鐨勬牸寮忓涓嬫墍紺猴細
聽聽聽gawk -f program-file input-file1 input-file2 ...
聽聽聽gawk 紼嬪簭鐨勬枃浠朵笉姝竴涓椂錛屾墽琛実awk 鐨勬牸寮忓涓嬫墍紺猴細
聽聽聽
聽聽聽gawk -f program-file1 -f program-file2 ... input-file1 input-file2 ...
6.3 鏂囦歡銆佽褰曞拰瀛楁
聽聽聽涓€鑸儏鍐典笅錛実 a w k鍙互澶勭悊鏂囦歡涓殑鏁板€兼暟鎹紝浣嗕篃鍙互澶勭悊瀛楃涓蹭俊鎭€傚鏋滄暟鎹病鏈夊瓨鍌ㄥ湪鏂囦歡涓紝鍙互閫氳繃綆¢亾鍛戒護鍜屽叾浠栫殑閲嶅畾鍚戞柟娉曠粰g a w k鎻愪緵杈撳叆銆傚綋鐒訛紝 g a w k鍙兘澶勭悊鏂囨湰鏂囦歡錛圓 S C I I鐮佹枃浠訛級銆偮?!--StartFragment -->鐢佃瘽鍙風爜鏈氨鏄竴涓猤 a w k鍙互澶勭悊鐨勬枃浠剁殑綆€鍗曚緥瀛愩€傜數璇濆彿鐮佹湰鐢卞緢澶氭潯鐩粍鎴愶紝姣忎竴涓潯鐩兘鏈夊悓鏍風殑鏍煎紡錛氬銆佸悕銆佸湴鍧€銆佺數璇濆彿鐮併€傛瘡涓€涓潯鐩兘鏄寜瀛楁瘝欏哄簭鎺掑垪銆傚湪g a w k涓紝姣忎竴涓繖鏍風殑鏉$洰鍙仛涓€涓褰曘€傚畠鏄竴涓畬鏁寸殑鏁版嵁鐨勯泦鍚堛€備緥濡傦紝鐢佃瘽鍙風爜鏈腑鐨凷mith John榪欎釜鏉$洰錛屽寘鎷粬鐨勫湴鍧€鍜岀數璇濆彿鐮侊紝灝辨槸涓€鏉¤褰曘€?br />聽聽聽璁板綍涓殑姣忎竴欏瑰彨鍋氫竴涓瓧孌點€傚湪g a w k涓紝瀛楁鏄渶鍩烘湰鐨勫崟浣嶃€傚涓褰曠殑闆嗗悎緇勬垚浜嗕竴涓枃浠躲€?br />聽聽聽澶у鏁版儏鍐典笅錛屽瓧孌典箣闂寸敱涓€涓壒孌婄殑瀛楃鍒嗗紑錛屽儚絀烘牸銆乀A B銆佸垎鍙風瓑銆傝繖浜涘瓧絎﹀彨鍋氬瓧孌靛垎闅旂銆傝鐪嬩笅闈㈣繖涓? e t c / p a s s w d鏂囦歡錛?br />t p a r k e r ; t 3 6 s 6 2 h s h ; 5 0 1 ; 1 0 1 ; Tim Parker;/home/tparker;/bin/bash
etreijs;2ys639dj3h;502;101;Ed Tr e i j s ; / h o m e / e t r e i j s ; / b i n / t c s h
y c h o w ; 1 h 2 7 s j ; 5 0 3 ; 1 0 1 ; Yvonne Chow;/home/ychow;/bin/bash
聽聽聽浣犲彲浠ョ湅鍑? e t c / p a s s w d鏂囦歡浣跨敤鍒嗗彿浣滀負瀛楁鍒嗛殧絎︺€? e t c / p a s s w d鏂囦歡涓殑姣忎竴琛岄兘鍖呮嫭涓冧釜瀛楁錛氱敤鎴峰悕錛涘彛浠わ紱鐢ㄦ埛I D錛涘伐浣滅粍I D錛涙敞閲婏紱 h o m e鐩綍錛涘惎濮嬬殑澶栧3銆傚鏋滀綘鎯寵鏌ユ壘絎叚涓瓧孌碉紝鍙渶鏁拌繃浜斾釜鍒嗗彿鍗沖彲銆?br />聽聽聽浣嗚€冭檻鍒頒互涓嬬數璇濆彿鐮佹湰鐨勪緥瀛愶紝浣犲氨浼氬彂鐜頒竴浜涢棶棰橈細
Smith John 13 Wilson St. 555-1283
Smith John 2736 Artside Dr Apt 123 555-2736
Smith John 125 Westmount Cr 555-1726
聽聽聽铏界劧鎴戜滑鑳藉鍒嗚鯨鍑烘瘡涓褰曞寘鎷洓涓瓧孌碉紝浣唃 a w k鍗存棤鑳戒負鍔涖€傜數璇濆彿鐮佹湰浣跨敤絀烘牸浣滀負鍒嗛殧絎︼紝鎵€浠 a w k璁や負S m i t h鏄涓€涓瓧孌碉紝 John 鏄浜屼釜瀛楁錛? 3鏄涓変釜瀛楁錛屼緷嬈$被鎺ㄣ€傚氨g a w k鑰岃█錛屽鏋滅敤絀烘牸浣滀負瀛楁鍒嗛殧絎︾殑璇濓紝鍒欑涓€涓褰曟湁鍏釜瀛楁錛岃€岀浜屼釜璁板綍鏈夊叓涓瓧孌點€?br />聽聽聽鎵€浠ワ紝鎴戜滑蹇呴』鎵懼嚭涓€涓洿濂界殑瀛楁鍒嗛殧絎︺€備緥濡傦紝鍍忎笅闈竴鏍蜂嬌鐢ㄦ枩鏉犱綔涓哄瓧孌靛垎闅旂錛?br />Smith/John/13 Wilson St./555-1283
Smith/John/2736 Artside Dr/Apt/123/555-2736
Smith/John/125 Westmount Cr/555-1726
聽聽聽濡傛灉浣犳病鏈夋寚瀹氬叾浠栫殑瀛楃浣滀負瀛楁鍒嗛殧絎︼紝閭d箞g a w k灝嗙己鐪佸湴浣跨敤絀烘牸鎴朤A B浣滀負瀛楁鍒嗛殧絎︺€?br />
6.4 妯″紡鍜屽姩浣?br />
聽聽聽鍦╣ a w k璇█涓瘡涓€涓懡浠ら兘鐢變袱閮ㄥ垎緇勬垚錛氫竴涓ā寮忥紙 p a t t e r n錛夊拰涓€涓浉搴旂殑鍔ㄤ綔錛坅 c t i o n錛夈€傚彧瑕佹ā寮忕鍚堬紝g a w k灝變細鎵ц鐩稿簲鐨勫姩浣溿€傚叾涓ā寮忛儴鍒嗙敤涓や釜鏂滄潬鎷搗鏉ワ紝鑰屽姩浣滈儴鍒嗙敤涓€瀵硅姳鎷彿鎷搗鏉ャ€備緥濡傦細
/ p a t t e r n 1 / { a c t i o n 1 }
/ p a t t e r n 2 / { a c t i o n 2 }
/ p a t t e r n 3 / { a c t i o n 3 }
聽聽聽鎵€鏈夌殑g a w k紼嬪簭閮芥槸鐢辮繖鏍風殑涓€瀵瑰鐨勬ā寮忓拰鍔ㄤ綔緇勬垚鐨勩€傚叾涓ā寮忔垨鍔ㄤ綔閮借兘澶熻鐪佺暐錛屼絾鏄袱涓笉鑳藉悓鏃惰鐪佺暐銆傚鏋滄ā寮忚鐪佺暐錛屽垯瀵逛簬浣滀負杈撳叆鐨勬枃浠墮噷闈㈢殑姣忎竴琛岋紝鍔ㄤ綔閮戒細琚墽琛屻€傚鏋滃姩浣滆鐪佺暐錛屽垯緙虹渷鐨勫姩浣滆鎵ц錛屾棦鏄劇ず鍑烘墍鏈夌鍚堟ā寮忕殑杈撳叆琛岃€屼笉鍋氫換浣曠殑鏀瑰姩銆?br />聽聽聽涓嬮潰鏄竴涓畝鍗曠殑渚嬪瓙錛屽洜涓篻awk 紼嬪簭寰堢煭錛屾墍浠ュ皢gawk 紼嬪簭鐩存帴鍐欏湪澶栧3鍛戒護琛岋細
gawk '/tparker/' /etc/passwd
聽聽聽聽姝ょ▼搴忓湪涓婇潰鎻愬埌鐨? e t c / p a s s w d鏂囦歡涓鎵劇鍚坱 p a r k e r妯″紡鐨勮褰曞茍鏄劇ず錛堟渚嬩腑娌℃湁鍔ㄤ綔錛屾墍浠ョ己鐪佺殑鍔ㄤ綔琚墽琛岋級銆?br />聽聽聽璁╂垜浠啀鐪嬩竴涓緥瀛愶細
聽聽聽gawk '/UNIX/{print $2}' file2.data
聽聽聽姝ゅ懡浠ゅ皢閫愯鏌ユ壘f i l e 2 . d a t a鏂囦歡涓寘鍚玌 N I X鐨勮褰曪紝騫舵墦鍗拌繖浜涜褰曠殑絎簩涓瓧孌點€備綘涔熷彲浠ュ湪涓€涓懡浠や腑浣跨敤澶氫釜妯″紡鍜屽姩浣滃錛屼緥濡傦細
gawk '/scandal/{print $1} /rumor/{print $2}' gossip_file
聽聽聽姝ゅ懡浠ゆ悳绱㈡枃浠秅 o s s i p _ f i l e涓寘鎷瑂 c a n d a l鐨勮褰曪紝騫舵墦鍗扮涓€涓瓧孌點€傜劧鍚庡啀浠庡ご鎼滅儲g o s s i p _ f i l e涓寘鎷瑀 u m o r鐨勮褰曪紝騫舵墦鍗扮浜屼釜瀛楁銆?br />
6.5 姣旇緝榪愮畻鍜屾暟鍊艱繍綆?br />
聽聽聽g a w k鏈夊緢澶氭瘮杈冭繍綆楃錛屼笅闈㈠垪鍑洪噸瑕佺殑鍑犱釜錛?br />= = 鐩哥瓑
! = 涓嶇浉絳?br />> 澶т簬
< 灝忎簬
> = 澶т簬絳変簬
< = 灝忎簬絳変簬
聽聽聽渚嬪:聽聽gawk '$4 > 100' testfile
聽聽聽灝嗕細鏄劇ず鏂囦歡testfile 涓偅浜涚鍥涗釜瀛楁澶т簬1 0 0鐨勮褰曘€?br />聽聽聽涓嬭〃鍒楀嚭浜唃 a w k涓熀鏈殑鏁板€艱繍綆楃銆?br />聽聽聽榪愮畻絎﹁鏄庣ず渚?br />聽聽聽+ 鍔犳硶榪愮畻2+6
聽聽聽- 鍑忔硶榪愮畻6-3
聽聽聽* 涔樻硶榪愮畻2*5
聽聽聽/ 闄ゆ硶榪愮畻8/4
聽聽聽^ 涔樻柟榪愮畻3^2 (=9)
聽聽聽% 姹備綑鏁?%4 (=1)
聽聽聽渚嬪:{print $3/2} 鏄劇ず絎笁涓瓧孌佃2闄ょ殑緇撴灉銆?br />聽聽聽鍦╣ a w k涓紝榪愮畻絎︾殑浼樺厛鏉冨拰涓€鑸殑鏁板榪愮畻鐨勪紭鍏堟潈涓€鏍楓€備緥濡傦細{print $1+$2*$3}
聽聽聽鏄劇ず絎簩涓瓧孌靛拰絎笁涓瓧孌電浉涔橈紝鐒跺悗鍜岀涓€涓瓧孌電浉鍔犵殑緇撴灉銆?br />聽聽聽浣犱篃鍙互鐢ㄦ嫭鍙鋒敼鍙樹紭鍏堟搴忋€備緥濡傦細
聽聽聽{print ($1+$2)*$3}
聽聽聽鏄劇ず絎竴涓瓧孌靛拰絎簩涓瓧孌電浉鍔狅紝鐒跺悗鍜岀涓変釜瀛楁鐩鎬箻鐨勭粨鏋溿€?br />
6.6 鍐呴儴鍑芥暟
g a w k涓湁鍚勭鐨勫唴閮ㄥ嚱鏁幫紝鐜板湪浠嬬粛濡備笅錛毬?br />
6.6.1 闅忔満鏁板拰鏁板鍑芥暟
sqrt(x) 姹倄 鐨勫鉤鏂規牴
sin(x) 姹倄 鐨勬寮﹀嚱鏁?br />cos(x) 姹倄 鐨勪綑寮﹀嚱鏁?br />a t a n 2 ( x錛寉) 姹倄 / y鐨勪綑鍒囧嚱鏁?br />log(x) 姹倄 鐨勮嚜鐒跺鏁?br />exp(x) 姹倄 鐨別 嬈℃柟
int(x) 姹倄 鐨勬暣鏁伴儴鍒?br />rand() 姹? 鍜?涔嬮棿鐨勯殢鏈烘暟
srand(x) 灝唜 璁劇疆涓簉 a n d ( )鐨勭瀛愭暟
6.6.2 瀛楃涓茬殑鍐呴儴鍑芥暟
鈥?i n d e x ( i n錛宖ind) 鍦ㄥ瓧絎︿覆in 涓鎵懼瓧絎︿覆find 絎竴嬈″嚭鐜扮殑鍦版柟錛岃繑鍥炲€兼槸瀛楃涓瞗ind 鍑虹幇鍦ㄥ瓧絎︿覆in 閲岄潰鐨勪綅緗€傚鏋滃湪瀛楃涓瞚n 閲岄潰鎵句笉鍒板瓧絎︿覆f i n d錛屽垯榪斿洖鍊間負0銆?br />渚嬪錛?br />print index("peanut"錛? a n " )
鏄劇ず緇撴灉3銆?br />鈥?length(string) 姹傚嚭string 鏈夊嚑涓瓧絎︺€?br />渚嬪錛?br />l e n g t h ( " a b c d e " )
鏄劇ず緇撴灉5銆?br />鈥?m a t c h ( s t r i n g錛宺 e g e x p ) 鍦ㄥ瓧絎︿覆string 涓鎵劇鍚坮egexp 鐨勬渶闀褲€佹渶闈犲乏杈圭殑瀛愬瓧絎︿覆銆傝繑鍥炲€兼槸regexp 鍦╯tring 鐨勫紑濮嬩綅緗紝鍗砳 n d e x鍊箋€俶atch 鍑芥暟灝嗕細璁劇疆緋葷粺鍙橀噺R S TA RT 絳変簬i n d e x鐨勫€鹼紝緋葷粺鍙橀噺RLENGTH 絳変簬絎﹀悎鐨勫瓧絎︿釜鏁般€傚鏋滀笉絎﹀悎錛屽垯浼氳緗甊 S TA RT 涓?銆丷LENGTH 涓? 1銆?br />鈥?s p r i n t f ( f o r m a t錛宔 x p r e s s i o n 1錛? . . ) 鍜宲rintf 綾諱技錛屼絾鏄痵printf 騫朵笉鏄劇ず錛岃€屾槸榪斿洖瀛楃涓層€備緥濡傦細
sprintf("pi = %.2f (approx.)"錛? 2 / 7 )
榪斿洖鐨勫瓧絎︿覆涓簆i = 3.14 (approx.)
鈥?s u b ( r e g e x p錛宺 e p l a c e m e n t錛宼 a rg e t ) 鍦ㄥ瓧絎︿覆t a rget 涓鎵劇鍚坮egexp 鐨勬渶闀褲€佹渶闈犲乏鐨勫湴鏂癸紝浠ュ瓧涓瞨eplacement 浠f浛鏈€宸﹁竟鐨剅 e g e x p銆?br />渚嬪錛?br />str = "water錛寃 a t e r錛宔 v e r y w h e r e "
s u b ( / a t /錛?" i t h "錛宻 t r )
緇撴灉瀛楃涓瞫 t r浼氬彉鎴?br />w i t h e r錛寃 a t e r錛宔 v e r y w h e r e
鈥?g s u b ( r e g e x p錛宺 e p l a c e m e n t錛宼 a rget) 涓庡墠闈㈢殑s u b綾諱技銆傚湪瀛楃涓瞭 a rget 涓鎵劇鍚坮 e g e x p鐨勬墍鏈夊湴鏂癸紝浠ュ瓧絎︿覆replacement 浠f浛鎵€鏈夌殑r e g e x p銆備緥濡傦細
s t r = " w a t e r錛寃 a t e r錛宔 v e r y w h e r e "g s u b ( / a t /錛?" i t h "錛宻 t r )
緇撴灉瀛楃涓瞫 t r浼氬彉鎴?br />w i t h e r錛寃 i t h e r錛宔 v e r y w h e r e
鈥?s u b s t r ( s t r i n g錛宻 t a r t錛宭ength) 榪斿洖瀛楃涓瞫tring 鐨勫瓙瀛楃涓詫紝榪欎釜瀛愬瓧絎︿覆鐨勯暱搴︿負l e n g t h錛屼粠絎瑂tart 涓綅緗紑濮嬨€備緥濡傦細
s u b s t r ( " w a s h i n g t o n "錛?錛? )榪斿洖鍊間負i n g
濡傛灉娌℃湁length 錛屽垯榪斿洖鐨勫瓙瀛楃涓叉槸浠庣start 涓綅緗紑濮嬭嚦緇撴潫銆?br />渚嬪錛?br />s u b s t r ( " w a s h i n g t o n "錛? )
榪斿洖鍊間負i n g t o n銆?br />鈥?tolower(string) 灝嗗瓧絎︿覆s t r i n g鐨勫ぇ鍐欏瓧姣嶆敼涓哄皬鍐欏瓧姣嶃€?br />渚嬪錛?br />tolower("MiXeD cAsE 123")
榪斿洖鍊間負mixed case 123銆?br />鈥?toupper(string) 灝嗗瓧絎︿覆s t r i n g鐨勫皬鍐欏瓧姣嶆敼涓哄ぇ鍐欏瓧姣嶃€?br />渚嬪錛?br />toupper("MiXeD cAsE 123")
榪斿洖鍊間負MIXED CASE 123銆?br />
6.6.3 杈撳叆杈撳嚭鐨勫唴閮ㄥ嚱鏁?br />
鈥?close(filename) 灝嗚緭鍏ユ垨杈撳嚭鐨勬枃浠秄ilename 鍏抽棴銆?br />鈥?system(command) 姝ゅ嚱鏁板厑璁哥敤鎴鋒墽琛屾搷浣滅郴緇熺殑鎸囦護錛屾墽琛屽畬姣曞悗灝嗗洖鍒癵 a w k紼嬪簭銆備緥濡傦細
BEGIN {system("ls")}
6.7 瀛楃涓插拰鏁板瓧
瀛楃涓插氨鏄竴榪炰覆鐨勫瓧絎︼紝瀹冨彲浠ヨg a w k閫愬瓧鍦扮炕璇戙€傚瓧絎︿覆鐢ㄥ弻寮曞彿鎷搗鏉ャ€傛暟瀛椾笉鑳界敤鍙屽紩鍙鋒嫭璧鋒潵錛屽茍涓攇 a w k灝嗗畠褰撲綔涓€涓暟鍊箋€備緥濡傦細
gawk '$1 != "Tim" {print}' testfile
姝ゅ懡浠ゅ皢鏄劇ず絎竴涓瓧孌靛拰Ti m涓嶇浉鍚岀殑鎵€鏈夎褰曘€傚鏋滃懡浠や腑Ti m涓よ竟涓嶇敤鍙屽紩鍙鳳紝g a w k灝嗕笉鑳芥紜墽琛屻€傚啀濡傦細
gawk '$1 == "50" {print}' testfile
聽聽聽姝ゅ懡浠ゅ皢鏄劇ず鎵€鏈夌涓€涓瓧孌靛拰5 0榪欎釜瀛楃涓茬浉鍚岀殑璁板綍銆俫 a w k涓嶇絎竴瀛楁涓殑鏁板€肩殑澶у皬錛岃€屽彧鏄€愬瓧鍦版瘮杈冦€傝繖鏃訛紝瀛楃涓? 0鍜屾暟鍊? 0騫朵笉鐩哥瓑銆?br />
6.8 鏍煎紡鍖栬緭鍑?br />
聽聽聽鎴戜滑鍙互璁╁姩浣滄樉紺轟竴浜涙瘮杈冨鏉傜殑緇撴灉銆備緥濡傦細
gawk '$1 != "Tim" {print $1錛? 5錛? 6錛?2}' testfile
灝嗘樉紺簍 e s t f i l e鏂囦歡涓墍鏈夌涓€涓瓧孌靛拰Ti m涓嶇浉鍚岀殑璁板綍鐨勭涓€銆佺浜斻€佺鍏拰絎簩涓瓧孌點€傝繘涓€姝ワ紝浣犲彲浠ュ湪p r i n t鍔ㄤ綔涓姞鍏ュ瓧絎︿覆錛屼緥濡傦細
gawk '$1 != "Tim" {print "The entry for "錛? 1錛?is not Tim. "錛?2}' testfile
聽聽聽p r i n t鍔ㄤ綔鐨勬瘡涓€閮ㄥ垎鐢ㄩ€楀彿闅斿紑銆?br />聽聽聽鍊熺敤C璇█鐨勬牸寮忓寲杈撳嚭鎸囦護錛屽彲浠ヨg a w k鐨勮緭鍑哄艦寮忔洿涓哄鏍楓€傝繖鏃訛紝搴旇鐢╬ r i n t f鑰屼笉鏄痯 r i n t銆備緥濡傦細
{printf "%5s likes this language\n"錛? 2 }
p r i n t f涓殑%5s 閮ㄥ垎鍛婅瘔gawk 濡備綍鏍煎紡鍖栬緭鍑哄瓧絎︿覆錛屼篃灝辨槸杈撳嚭5涓瓧絎﹂暱銆傚畠鐨勫€肩敱printf 鐨勬渶鍚庨儴鍒嗘寚鍑猴紝鍦ㄦ鏄浜屼釜瀛楁銆俓 n鏄洖杞︽崲琛岀銆傚鏋滅浜屼釜瀛楁涓瓨鍌ㄧ殑鏄漢鍚嶏紝鍒欒緭鍑虹粨鏋滃ぇ鑷村涓嬶細
Tim likes this language
G e o ff likes this language
Mike likes this language
Joe likes this language
聽聽聽gawk 璇█鏀寔鐨勫叾浠栨牸寮忔帶鍒剁鍙峰涓嬶細
鈥?c 濡傛灉鏄瓧絎︿覆錛屽垯鏄劇ず絎竴涓瓧絎︼紱濡傛灉鏄暣鏁幫紝鍒欏皢鏁板瓧浠SCII 瀛楃鐨勫艦寮忔樉紺恒€?br />渚嬪錛?br />printf 鈥? c鈥濓紝6 5
緇撴灉灝嗘樉紺哄瓧姣岮銆?br />鈥?d 鏄劇ず鍗佽繘鍒剁殑鏁存暟銆?br />鈥?i 鏄劇ず鍗佽繘鍒剁殑鏁存暟銆?br />鈥?e 灝嗘誕鐐規暟浠ョ瀛﹁鏁版硶鐨勫艦寮忔樉紺恒€?br />渚嬪錛?br />print 鈥? 4 . 3 e鈥濓紝1 9 5 0
緇撴灉灝嗘樉紺? . 9 5 0 e + 0 3銆?br />鈥?f 灝嗘暟瀛椾互嫻偣鐨勫艦寮忔樉紺恒€?br />鈥?g 灝嗘暟瀛椾互縐戝璁版暟娉曠殑褰㈠紡鎴栨誕鐐圭殑褰㈠紡鏄劇ず銆傛暟瀛楃殑緇濆鍊煎鏋滃ぇ浜庣瓑浜? . 0 0 0 1鍒?br />浠ユ誕鐐圭殑褰㈠紡鏄劇ず錛屽惁鍒欎互縐戝璁版暟娉曠殑褰㈠紡鏄劇ず銆?br />鈥?o 鏄劇ず鏃犵鍙風殑鍏繘鍒舵暣鏁般€?br />鈥?s 鏄劇ず涓€涓瓧絎︿覆銆?br />鈥?x 鏄劇ず鏃犵鍙風殑鍗佸叚榪涘埗鏁存暟銆? 0鑷? 5浠鑷砯琛ㄧず銆?br />鈥?X 鏄劇ず鏃犵鍙風殑鍗佸叚榪涘埗鏁存暟銆? 0鑷? 5浠鑷矲琛ㄧず銆?br />鈥?% 瀹冨茍涓嶆槸鐪熸鐨勬牸寮忔帶鍒跺瓧絎︼紝% %灝嗘樉紺?銆?br />褰撲綘浣跨敤榪欎簺鏍煎紡鎺у埗瀛楃鏃訛紝浣犲彲浠ュ湪鎺у埗瀛楃鍓嶇粰鍑烘暟瀛楋紝浠ヨ〃紺轟綘灝嗙敤鐨勫嚑浣嶆垨鍑犱釜瀛楃銆備緥濡傦紝6 d琛ㄧず涓€涓暣鏁版湁6浣嶃€傚啀璇風湅涓嬮潰鐨勪緥瀛愶細
{printf "%5s works for %5s and earns %2d an hour"錛? 1錛? 2錛? 3 }
灝嗕細浜х敓綾諱技濡備笅鐨勮緭鍑猴細
Joe works for Mike and earns 12 an hour
褰撳鐞嗘暟鎹椂錛屼綘鍙互鎸囧畾鏁版嵁鐨勭簿紜綅鏁?br />{printf "%5s earns $%.2f an hour"錛? 3錛? 6 }
鍏惰緭鍑哄皢綾諱技浜庯細
Joe earns $12.17 an hour
浣犱篃鍙互浣跨敤涓€浜涙崲鐮佹帶鍒剁鏍煎紡鍖栨暣琛岀殑杈撳嚭銆備箣鎵€浠ュ彨鍋氭崲鐮佹帶鍒剁錛屾槸鍥犱負g a w k瀵硅繖浜涚鍙鋒湁鐗規畩鐨勮В閲娿€備笅闈㈠垪鍑哄父鐢ㄧ殑鎹㈢爜鎺у埗絎︼細
\a 璀﹀憡鎴栧搷閾冨瓧絎︺€?br />\b 鍚庨€€涓€鏍箋€?br />\f 鎹㈤〉銆?br />\n 鎹㈣銆?br />\r 鍥炶濺銆?br />\t Ta b銆?br />\v 鍨傜洿鐨則 a b銆?br />
6.9 鏀瑰彉瀛楁鍒嗛殧絎?br />
聽聽聽鍦╣ a w k涓紝緙虹渷鐨勫瓧孌靛垎闅旂涓€鑸槸絀烘牸絎︽垨TA B銆備絾浣犲彲浠ュ湪鍛戒護琛屼嬌鐢? F閫夐」鏀瑰彉瀛楃鍒嗛殧絎︼紝鍙渶鍦? F鍚庨潰璺熺潃浣犳兂鐢ㄧ殑鍒嗛殧絎﹀嵆鍙€?br />gawk -F" ;"'/tparker/{print}' /etc/passwd
聽聽聽鍦ㄦ渚嬩腑錛屼綘灝嗗瓧絎﹀垎闅旂璁劇疆鎴愬垎鍙楓€傛敞鎰忥細 - F蹇呴』鏄ぇ鍐欑殑錛岃€屼笖蹇呴』鍦ㄧ涓€涓紩鍙蜂箣鍓嶃€?br />
6.10 鍏冨瓧絎?br />
g a w k璇█鍦ㄦ牸寮忓尮閰嶆椂鏈夊叾鐗規畩鐨勮鍒欍€備緥濡傦紝 c a t鑳藉鍜岃褰曚腑浠諱綍浣嶇疆鏈夎繖涓変釜瀛楃鐨勫瓧孌靛尮閰嶃€備絾鏈夋椂浣犻渶瑕佷竴浜涙洿涓虹壒孌婄殑鍖歸厤銆傚鏋滀綘鎯寵c a t鍙拰c o n c a t e n a t e鍖歸厤錛屽垯闇€瑕佸湪鏍煎紡涓ょ鍔犱笂絀烘牸錛?br />/ cat / {print}
鍐嶄緥濡傦紝浣犲笇鏈涙棦鍜宑 a t鍙堝拰C AT鍖歸厤錛屽垯鍙互浣跨敤鎴?|)錛?br />/ cat | CAT / {print}
鍦╣ a w k涓紝鏈夊嚑涓瓧絎︽湁鐗規畩鎰忎箟銆備笅闈㈠垪鍑哄彲浠ョ敤鍦╣ a w k鏍煎紡涓殑榪欎簺瀛楃錛?br />鈥?^ 琛ㄧず瀛楁鐨勫紑濮嬨€?br />渚嬪錛?3 ~ /^b/
聽聽聽濡傛灉絎笁涓瓧孌典互瀛楃b寮€濮嬶紝鍒欏尮閰嶃€?br />鈥?$ 琛ㄧず瀛楁鐨勭粨鏉熴€?br />渚嬪錛?3 ~ /b$/
濡傛灉絎笁涓瓧孌典互瀛楃b緇撴潫錛屽垯鍖歸厤銆?br />鈥?. 琛ㄧず鍜屼換浣曞崟瀛楃m鍖歸厤銆?br />渚嬪錛?3 ~ /i.m/
濡傛灉絎笁涓瓧孌墊湁瀛楃i錛屽垯鍖歸厤銆?br />鈥?| 琛ㄧず鈥滄垨鈥濄€?br />渚嬪錛? c a t | C AT/
鍜宑at 鎴朇 AT瀛楃鍖歸厤銆?br />鈥?* 琛ㄧず瀛楃鐨勯浂鍒板嬈¢噸澶嶃€?br />渚嬪錛?UNI*X/
鍜孶 N X銆乁 N I X銆乁 N I I X銆乁 N I I I X絳夊尮閰嶃€?br />鈥?+ 琛ㄧず瀛楃鐨勪竴嬈″埌澶氭閲嶅銆?br />渚嬪錛?br />/UNI+X/
鍜孶 N I X銆乁 N I I X絳夊尮閰嶃€?br />鈥?\{a錛宐\} 琛ㄧず瀛楃a嬈″埌b嬈′箣闂寸殑閲嶅銆?br />渚嬪錛?br />/ U N I \ { 1錛? \ } X
鍜孶 N I X銆乁 N I I X鍜孶 N I I I X鍖歸厤銆?br />鈥?? 琛ㄧず瀛楃闆舵鍜屼竴嬈$殑閲嶅銆?br />渚嬪錛?br />/UNI?X/
鍜孶NX 鍜孶 N I X鍖歸厤銆?br />鈥?[] 琛ㄧず瀛楃鐨勮寖鍥淬€?br />渚嬪錛?br />/I[BDG]M/
鍜孖 B M銆両 D M鍜孖 G M鍖歸厤
鈥?[^] 琛ㄧず涓嶅湪[ ]涓殑瀛楃銆?br />渚嬪錛?br />/I[^DE]M/
鍜屾墍鏈夌殑浠寮€濮嬨€丮緇撴潫鐨勫寘鎷笁涓瓧絎︾殑瀛楃涓插尮閰嶏紝闄や簡I D M鍜孖 E M涔嬪銆?br />
6.11 璋冪敤gawk紼嬪簭
褰撻渶瑕佸緢澶氬妯″紡鍜屽姩浣滄椂錛屼綘鍙互緙栧啓涓€涓猤 a w k紼嬪簭錛堜篃鍙仛g a w k鑴氭湰錛夈€傚湪g a w k紼嬪簭涓紝浣犲彲浠ョ渷鐣ユā寮忓拰鍔ㄤ綔涓よ竟鐨勫紩鍙鳳紝鍥犱負鍦╣ a w k紼嬪簭涓紝妯″紡鍜屽姩浣滀粠鍝紑濮嬪拰浠庡摢緇撴潫鏃舵槸寰堟樉鐒剁殑銆備綘鍙互浣跨敤濡備笅鍛戒護璋冪敤g a w k紼嬪簭錛?br />gawk -f script filename
姝ゅ懡浠や嬌g a w k瀵規枃浠秄 i l e n a m e鎵ц鍚嶄負s c r i p t鐨刧 a w k紼嬪簭銆?br />濡傛灉浣犱笉甯屾湜浣跨敤緙虹渷鐨勫瓧孌靛垎闅旂錛屼綘鍙互鍦╢閫夐」鍚庨潰璺熺潃F閫夐」鎸囧畾鏂扮殑瀛楁鍒嗛殧絎︼紙褰撶劧浣犱篃鍙互鍦╣ a w k紼嬪簭涓寚瀹氾級錛屼緥濡傦紝浣跨敤鍒嗗彿浣滀負瀛楁鍒嗛殧絎︼細
gawk -f script -F";" filename
濡傛灉甯屾湜gawk 紼嬪簭澶勭悊澶氫釜鏂囦歡錛屽垯鎶婂悇涓枃浠跺悕緗楀垪鍏跺悗錛?br />gawk -f script filename1 filename2 filename3 ...
緙虹渷鎯呭喌涓嬶紝 g a w k鐨勮緭鍑哄皢閫佸線灞忓箷銆備絾浣犲彲浠ヤ嬌鐢↙ i n u x鐨勯噸瀹氬悜鍛戒護浣縢 a w k鐨勮緭鍑洪€佸線涓€涓枃浠訛細
gawk -f script filename > save_file
6.12 BEGIN鍜孍ND
聽聽聽鏈変袱涓壒孌婄殑妯″紡鍦╣ a w k涓潪甯告湁鐢ㄣ€侭 E G I N妯″紡鐢ㄦ潵鎸囨槑g a w k寮€濮嬪鐞嗕竴涓枃浠朵箣鍓嶆墽琛屼竴浜涘姩浣溿€侭 E G I N緇忓父鐢ㄦ潵鍒濆鍖栨暟鍊鹼紝璁劇疆鍙傛暟絳夈€侲 N D妯″紡鐢ㄦ潵鍦ㄦ枃浠跺鐞嗗畬鎴愬悗鎵ц涓€浜涙寚浠わ紝涓€鑸敤浣滄€葷粨鎴栨敞閲娿€?br />BEGIN 鍜孍 N D涓墍鏈夎鎵ц鐨勬寚浠ら兘搴旇鐢ㄨ姳鎷彿鎷搗鏉ャ€侭EGIN 鍜孍 N D蹇呴』浣跨敤澶у啓銆?br />璇風湅涓嬮潰鐨勪緥瀛愶細
BEGIN { print "Starting the process the file" }
$1 == "UNIX" {print}
$2 > 10 {printf "This line has a value of %d"錛? 2 }
END { print "Finished processing the file. Bye!"}
姝ょ▼搴忎腑錛屽厛鏄劇ず涓€鏉′俊鎭細 Starting the process the file錛岀劧鍚庡皢鎵€鏈夌涓€涓瓧孌電瓑浜嶶 N I X鐨勬暣鏉¤褰曟樉紺哄嚭鏉ワ紝鐒跺悗鍐嶆樉紺虹浜屼釜瀛楁澶т簬10 鐨勮褰曪紝鏈€鍚庢樉紺轟俊鎭細 F i n i s h e dprocessing the file. Bye!銆?br />
6.13 鍙橀噺
鍦╣ a w k涓紝鍙互鐢ㄧ瓑鍙? = )緇欎竴涓彉閲忚祴鍊鹼細
var1 = 10
鍦╣ a w k涓紝浣犱笉蹇呬簨鍏堝0鏄庡彉閲忕被鍨嬨€?br />璇風湅涓嬮潰鐨勪緥瀛愶細
$1 == "Plastic" { count = count + 1 }
濡傛灉絎竴涓瓧孌墊槸P l a s t i c錛屽垯c o u n t鐨勫€煎姞1銆傚湪姝や箣鍓嶏紝鎴戜滑搴斿綋緇檆 o u n t璧嬩簣榪囧垵鍊鹼紝涓€鑸槸鍦˙ E G I N閮ㄥ垎銆?br />涓嬮潰鏄瘮杈冨畬鏁寸殑渚嬪瓙錛?br />BEGIN { count = 0 }
$5 == "UNIX" { count = count + 1 }
END { printf "%d occurrences of UNIX were found"錛宑ount }
鍙橀噺鍙互鍜屽瓧孌靛拰鏁板€間竴璧蜂嬌鐢紝鎵€浠ワ紝涓嬮潰鐨勮〃杈懼紡鍧囦負鍚堟硶錛?br />count = count + $6
count = $5 - 8
count = $5 + var1
鍙橀噺涔熷彲浠ユ槸鏍煎紡鐨勪竴閮ㄥ垎錛屼緥濡傦細
$2 > max_value {print "Max value exceeded by "錛?2 -max_value}
$4 - var1 < min_value {print "Illegal value of "錛? 4 }
6.14 鍐呯疆鍙橀噺
g a w k璇█涓湁鍑犱釜鍗佸垎鏈夌敤鐨勫唴緗彉閲忥紝鐜板湪鍒椾簬涓嬮潰錛?br />
NR 宸茬粡璇誨彇榪囩殑璁板綍鏁般€?br />FNR 浠庡綋鍓嶆枃浠朵腑璇誨嚭鐨勮褰曟暟銆?br />F I L E N A M E 杈撳叆鏂囦歡鐨勫悕瀛椼€?br />FS 瀛楁鍒嗛殧絎︼紙緙虹渷涓虹┖鏍鹼級銆?br />RS 璁板綍鍒嗛殧絎︼紙緙虹渷涓烘崲琛岋級銆?br />OFMT 鏁板瓧鐨勮緭鍑烘牸寮忥紙緙虹渷涓? g錛夈€?br />OFS 杈撳嚭瀛楁鍒嗛殧絎︺€?br />ORS 杈撳嚭璁板綍鍒嗛殧絎︺€?br />NF 褰撳墠璁板綍涓殑瀛楁鏁般€?br />
濡傛灉浣犲彧澶勭悊涓€涓枃浠訛紝鍒橬R 鍜孎NR 鐨勫€兼槸涓€鏍風殑銆備絾濡傛灉鏄涓枃浠訛紝 N R鏄鎵€鏈夌殑鏂囦歡鏉ヨ鐨勶紝鑰孎NR 鍒欏彧鏄拡瀵瑰綋鍓嶆枃浠惰€岃█銆備緥濡傦細
NR <= 5 {print "Not enough fields in the record"}
媯€鏌ヨ褰曟暟鏄惁灝忎簬5錛屽鏋滃皬浜?錛屽垯鏄劇ず鍑洪敊淇℃伅銆?br />F S鍗佸垎鏈夌敤錛屽洜涓篎 S鎺у埗杈撳叆鏂囦歡鐨勫瓧孌靛垎闅旂銆備緥濡傦紝鍦˙ E G I N鏍煎紡涓紝浣跨敤濡備笅鐨?br />鍛戒護錛?br />F S = " : "
6.15 鎺у埗緇撴瀯
6.15.1 if 琛ㄨ揪寮?br />
if 琛ㄨ揪寮忕殑璇硶濡備笅錛?br />if (expression){
c o m m a n d s
}
e l s e {
c o m m a n d s
}
渚嬪錛?br /># a simple if loop
(if ($1 == 0){
print "This cell has a value of zero"
}
else {
printf "The value is %d\n"錛? 1
} )
鍐嶇湅涓嬩竴涓緥瀛愶細
# a nicely formatted if loop
(if ($1 > $2){
print "The first column is larger"
} else {
print "The second column is larger"
} )
6.15.2 while 寰幆
while 寰幆鐨勮娉曞涓嬶細
while (expression){
c o m m a n d s
}
渚嬪錛?br /># interest calculation computes compound interest
# inputs from a file are the amount錛宨nterest_rateand years
{var = 1
while (var <= $3) {
p r i n t f ( " % f \ n "錛? 1 * ( 1 + $ 2 ) ^ v a r )
v a r + +}
}
6.15.3 for 寰幆
for 寰幆鐨勮娉曞涓嬶細
for (initialization; expression; increment) {
c o m m a n d
}
渚嬪錛?br /># interest calculation computes compound interest
# inputs from a file are the amount錛宨nterest_rateand years
{for (var=1; var <= $3; var++) {
p r i n t f ( " % f \ n "錛? 1 * ( 1 + $ 2 ) ^ v a r )
}
}
6.15.4 next 鍜宔xit
next 鎸囦護鐢ㄦ潵鍛婅瘔gawk 澶勭悊鏂囦歡涓殑涓嬩竴涓褰曪紝 鑰屼笉綆$幇鍦ㄦ鍦ㄥ仛浠€涔堛€傝娉曞涓嬶細
{ command1
c o m m a n d 2
c o m m a n d 3
n e x t
c o m m a n d 4
}
聽聽聽紼嬪簭鍙鎵ц鍒皀 e x t鎸囦護錛屽氨璺沖埌涓嬩竴涓褰曚粠澶存墽琛屽懡浠ゃ€傚洜姝わ紝鏈緥涓紝 c o m m a n d 4鎸囦護姘歌繙涓嶄細琚墽琛屻€?br />聽聽聽紼嬪簭閬囧埌e x i t鎸囦護鍚庯紝灝辮漿鍒扮▼搴忕殑鏈熬鍘繪墽琛孍 N D錛屽鏋滄湁E N D鐨勮瘽銆?br />
6.16 鏁扮粍
g a w k璇█鏀寔鏁扮粍緇撴瀯銆傛暟緇勪笉蹇呬簨鍏堝垵濮嬪寲銆傚0鏄庝竴涓暟緇勭殑鏂規硶濡備笅錛?br />a r r a y n a m e [ n u m ] = v a l u e
璇風湅涓嬮潰鐨勪緥瀛愶細
# reverse lines in a file
{line[NR] = $0 } # remember each line
END {var=NR # output lines in reverse order
while (var > 0){
print line[var]
v a r - -
}
}
姝ゆ紼嬪簭璇誨彇涓€涓枃浠剁殑姣忎竴琛岋紝騫剁敤鐩稿弽鐨勯『搴忔樉紺哄嚭鏉ャ€傛垜浠嬌鐢∟ R浣滀負鏁扮粍鐨勪笅鏍囨潵瀛樺偍鏂囦歡鐨勬瘡涓€鏉¤褰曪紝鐒跺悗鍦ㄤ粠鏈€鍚庝竴鏉¤褰曞紑濮嬶紝灝嗘枃浠墮€愭潯鍦版樉紺哄嚭鏉ャ€?br />
6.17 鐢ㄦ埛鑷畾涔夊嚱鏁?br />
澶嶆潅鐨刧awk 紼嬪簭甯稿父鍙互浣跨敤鑷繁瀹氫箟鐨勫嚱鏁版潵綆€鍖栥€傝皟鐢ㄧ敤鎴瘋嚜瀹氫箟鍑芥暟涓庤皟鐢ㄥ唴閮ㄥ嚱鏁扮殑鏂規硶涓€鏍楓€傚嚱鏁扮殑瀹氫箟鍙互鏀懼湪gawk 紼嬪簭鐨勪換浣曞湴鏂廣€?br />鐢ㄦ埛鑷畾涔夊嚱鏁扮殑鏍煎紡濡備笅錛?br />function name (parameter-list) {
b o d y - o f - f u n c t i o n
}
name 鏄墍瀹氫箟鐨勫嚱鏁扮殑鍚嶇О銆備竴涓紜殑鍑芥暟鍚嶇О鍙寘鎷竴搴忓垪鐨勫瓧姣嶃€佹暟瀛椼€佷笅鏍囩嚎( u n d e r s c o r e s )錛屼絾鏄笉鍙敤鏁板瓧鍋氬紑澶淬€俻 a r a m e t e r-list 鏄嚱鏁扮殑鍏ㄩ儴鍙傛暟鐨勫垪琛紝鍚勪釜鍙傛暟涔嬮棿浠ラ€楃偣闅斿紑銆俠ody-of-function 鍖呭惈gawk 鐨勮〃杈懼紡錛屽畠鏄嚱鏁板畾涔夐噷鏈€閲嶈鐨勯儴鍒嗭紝瀹冨喅瀹氬嚱鏁板疄闄呰鍋氱殑浜嬫儏銆?br />涓嬮潰榪欎釜渚嬪瓙錛屼細灝嗘瘡涓褰曠殑絎竴涓瓧孌電殑鍊肩殑騫蟲柟涓庣浜屼釜瀛楁鐨勫€肩殑騫蟲柟鍔犺搗鏉ャ€?br />{print "sum ="錛孲 q u a r e S u m ( $ 1錛? 2 ) }
function SquareSum(x錛寉) {
s u m = x * x + y * y
return sum
}
聽聽聽鍒版錛屾垜浠凡緇忕煡閬撲簡g a w k鐨勫熀鏈敤娉曘€俫 a w k璇█鍗佸垎鏄撳濂界敤錛屼緥濡傦紝浣犲彲浠ョ敤g a w k緙栧啓涓€孌靛皬紼嬪簭鏉ヨ綆椾竴涓洰褰曚腑鎵€鏈夋枃浠剁殑涓暟鍜屽閲忋€傚鏋滅敤鍏朵粬鐨勮璦€錛屽C璇█錛屽垯浼氬崄鍒嗙殑楹葷儲錛岀浉鍙嶏紝g a w k鍙渶瑕佸嚑琛屽氨鍙互瀹屾垚姝ゅ伐浣溿€?br />
6.18 鍑犱釜瀹炰緥
鏈€鍚庯紝鍐嶄婦鍑犱釜g a w k鐨勪緥瀛愶細
gawk '{if (NF > max) max = NF}
END {print max}'
姝ょ▼搴忎細鏄劇ず鎵€鏈夎緭鍏ヨ涔嬩腑瀛楁鐨勬渶澶т釜鏁般€?br />gawk 'length($0) > 80'
姝ょ▼搴忎細鏄劇ず鍑鴻秴榪?0 涓瓧絎︾殑姣忎竴琛屻€傛澶勫彧鏈夋ā寮忚鍒楀嚭錛屽姩浣滄槸閲囩敤緙虹渷鍊兼樉紺烘暣涓褰曘€?br />gawk 'NF > 0'
鏄劇ず鎷ユ湁鑷沖皯涓€涓瓧孌電殑鎵€鏈夎銆傝繖鏄竴涓畝鍗曠殑鏂規硶錛屽皢涓€涓枃浠墮噷鐨勬墍鏈夌┖鐧借鍒犻櫎銆?br />gawk 'BEGIN {for (i = 1; i <= 7; i++)
print int(101 * rand())}'
姝ょ▼搴忎細鏄劇ず鍑鴻寖鍥存槸0 鍒?00 涔嬮棿鐨? 涓殢鏈烘暟銆?br />ls -l files | gawk '{x += $4}; END {print "total bytes: " x}'
姝ょ▼搴忎細鏄劇ず鍑烘墍鏈夋寚瀹氱殑鏂囦歡鐨勬€誨瓧鑺傛暟銆?br />expand file | gawk '{if (x < length()) x = length()}
END {print "maximum line length is " x}'
姝ょ▼搴忎細灝嗘寚瀹氭枃浠墮噷鏈€闀夸竴琛岀殑闀垮害鏄劇ず鍑烘潵銆俥xpand 浼氬皢tab 鏀規垚s p a c e錛屾墍浠ユ槸鐢ㄥ疄闄呯殑鍙寵竟鐣屾潵鍋氶暱搴︾殑姣旇緝銆?br />gawk 'BEGIN {FS = ":"}
{print $1 | "sort"}' /etc/passwd
姝ょ▼搴忎細灝嗘墍鏈夌敤鎴風殑鐧誨綍鍚嶇О錛屼緷鐓у瓧姣嶇殑欏哄簭鏄劇ず鍑烘潵銆?br />gawk '{nlines++}
END {print nlines}'
姝ょ▼搴忎細灝嗕竴涓枃浠剁殑鎬昏鏁版樉紺哄嚭鏉ャ€?br />gawk 'END {print NR}'
姝ょ▼搴忎篃浼氬皢涓€涓枃浠剁殑鎬昏鏁版樉紺哄嚭鏉ワ紝浣嗘槸璁$畻琛屾暟鐨勫伐浣滅敱g a w k鏉ュ仛銆?br />gawk '{print NR錛? 0 } '
姝ょ▼搴忔樉紺哄嚭鏂囦歡鐨勫唴瀹規椂錛屼細鍦ㄦ瘡琛岀殑鏈€鍓嶉潰鏄劇ず鍑鴻鍙鳳紝瀹冪殑鍑芥暟涓庘€?cat -n鈥欑被浼箋€?