锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 榪欐槸1.txt鐨勫唴瀹?/p> 鍐嶇湅鎵ц榪欎袱鏉″懡浠ょ殑鍖哄埆鍚?/p> 鍘繪帀 “琛岄” 甯?#8220;@”鐨勯瀛楁瘝@ 鐗瑰畾瀛楃涓茬殑琛屽墠鎻掑叆鏂拌 鐗瑰畾瀛楃涓茬殑琛屽悗鎻掑叆鏂拌 鐗瑰畾瀛楃涓茬殑鍒犻櫎 鍦ㄤ嬌鐢╯ed瀵規棩蹇楁垨鑰呭叾瀹冩枃鏈繘琛宲arse鐨勮繃紼嬪綋涓紝鏈夋椂鍊欐垜浠渶瑕佸紩鐢ㄥ閮ㄥ彉閲忕殑鍊鹼紝 濡傛灉鏇挎崲鐨勫彉閲忓唴瀹逛腑鍚湁/絎﹀彿鍒欎細鎻愮ず濡備笅閿欒錛屽 # 涓婇潰渚嬪瓙寮曠敤浜嗕竴涓幆澧冨彉閲?RANDOM鐨勫?br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; word-wrap: break-word;" /> # 涓婇潰鐨勪緥瀛愪嬌鐢ㄤ簡鏃у紡鐨勫懡浠ゆ浛鎹紝涔熷彲浠ラ噰鐢ㄦ柊寮忕殑鍛戒護鏇挎崲鏂規硶錛屽涓?br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; word-wrap: break-word;" /> # 涓嬮潰渚嬪瓙鍙栫敤褰撳墠鏃ユ湡浣滀負緇撴灉鐨勪竴閮ㄥ垎錛屽涓?br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; word-wrap: break-word;" /> 2.sed鍛戒護浣跨敤鍙屽紩鍙風殑鎯呭喌涓嬬洿鎺shell command`鎴栬?(shell command)寮曠敤鍛戒護鎵ц鐨勭粨鏋?br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; word-wrap: break-word;" /> 綾諱技鐨勶紝鍙屽紩鍙風殑鎯呭喌錛屽涓?br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; word-wrap: break-word;" /> # 浣跨敤鐜鍙橀噺$RANDOM浠ュ強鏃у紡鍛戒護鏇挎崲鐨勪緥瀛?br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; word-wrap: break-word;" /> [root@www ~]# sed [-nefr] [鍔ㄤ綔] 閫夐」涓庡弬鏁幫細 -n 錛氫嬌鐢ㄥ畨闈?silent)妯″紡銆傚湪涓鑸?sed 鐨勭敤娉曚腑錛屾墍鏈夋潵鑷?STDIN 鐨勬暟鎹竴鑸兘浼氳鍒楀嚭鍒扮粓绔笂銆備絾濡傛灉鍔犱笂 -n 鍙傛暟鍚庯紝鍒欏彧鏈夌粡榪噑ed 鐗規畩澶勭悊鐨勯偅涓琛?鎴栬呭姩浣?鎵嶄細琚垪鍑烘潵銆?-e 錛氱洿鎺ュ湪鍛戒護鍒楁ā寮忎笂榪涜 sed 鐨勫姩浣滅紪杈戯紱 -f 錛氱洿鎺ュ皢 sed 鐨勫姩浣滃啓鍦ㄤ竴涓枃浠跺唴錛?-f filename 鍒欏彲浠ヨ繍琛?filename 鍐呯殑 sed 鍔ㄤ綔錛?-r 錛?span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">sed 鐨勫姩浣滄敮鎸佺殑鏄歡浼稿瀷姝h琛ㄧず娉曠殑璇硶銆?榛樿鏄熀紜姝h琛ㄧず娉曡娉? -i 錛氱洿鎺ヤ慨鏀硅鍙栫殑鏂囦歡鍐呭錛岃屼笉鏄緭鍑哄埌緇堢銆? 鍔ㄤ綔璇存槑錛?[n1[,n2]]function n1, n2 錛氫笉瑙佸緱浼氬瓨鍦紝涓鑸唬琛ㄣ庨夋嫨榪涜鍔ㄤ綔鐨勮鏁般忥紝涓句緥鏉ヨ錛屽鏋滄垜鐨勫姩浣滄槸闇瑕佸湪 10 鍒?20 琛屼箣闂磋繘琛岀殑錛屽垯銆?10,20[鍔ㄤ綔琛屼負] 銆? function錛?a 錛氭柊澧烇紝 a 鐨勫悗闈㈠彲浠ユ帴瀛椾覆錛岃岃繖浜涘瓧涓蹭細鍦ㄦ柊鐨勪竴琛屽嚭鐜?鐩墠鐨勪笅涓琛?锝?c 錛氬彇浠o紝 c 鐨勫悗闈㈠彲浠ユ帴瀛椾覆錛岃繖浜涘瓧涓插彲浠ュ彇浠?n1,n2 涔嬮棿鐨勮錛?d 錛氬垹闄わ紝鍥犱負鏄垹闄ゅ晩錛屾墍浠?d 鍚庨潰閫氬父涓嶆帴浠諱綍鍜氬挌錛?i 錛氭彃鍏ワ紝 i 鐨勫悗闈㈠彲浠ユ帴瀛椾覆錛岃岃繖浜涘瓧涓蹭細鍦ㄦ柊鐨勪竴琛屽嚭鐜?鐩墠鐨勪笂涓琛?錛?p 錛氬垪鍗幫紝浜﹀嵆灝嗘煇涓夋嫨鐨勬暟鎹嵃鍑恒傞氬父 p 浼氫笌鍙傛暟 sed -n 涓璧瘋繍琛岋綖 s 錛氬彇浠o紝鍙互鐩存帴榪涜鍙栦唬鐨勫伐浣滃摡錛侀氬父榪欎釜 s 鐨勫姩浣滃彲浠ユ惌閰嶆瑙勮〃紺烘硶錛佷緥濡?1,20s/old/new/g 灝辨槸鍟︼紒
sed -i 灝辨槸鐩存帴瀵規枃鏈枃浠惰繘琛屾搷浣滅殑sed -i 's/鍘熷瓧絎︿覆/鏂板瓧絎︿覆/' /home/1.txt sed -i 's/鍘熷瓧絎︿覆/鏂板瓧絎︿覆/g' /home/1.txt
榪欎袱鏉″懡浠ょ殑鍖哄埆灝辨槸錛岀湅紺轟緥鍚?/p>#cat 1.txt d ddd #ff
sed -i 's/d/7523/' /home/1.txt 鎵ц緇撴灉 7523 7523dd #ff sed -i 's/d/7523/g' /home/1.txt 鎵ц緇撴灉 7523 752375237523 #ff
sed -i 's/^@//' file
sed -i '/鐗瑰畾瀛楃涓?i 鏂拌瀛楃涓?/span>' file
sed -i '/鐗瑰畾瀛楃涓?a 鏂拌瀛楃涓?/span>' file
sed -i '/瀛楃涓?d' file
]]>
鎴栬呰幏鍙栦竴涓猻hell鍛戒護鎵ц鐨勭粨鏋滐紝浠ヤ究杈懼埌鏇村姞鍙鐨勮緭鍑虹粨鏋溿傝繖閲屼粙緇嶅浣曞仛鍒般?br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; word-wrap: break-word;" />
sed涓嬌鐢ㄥ彉閲忔浛鎹?br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; word-wrap: break-word;" />
1.sed鍛戒護浣跨敤鍙屽紩鍙風殑鎯呭喌涓嬶紝浣跨敤$var鐩存帴寮曠敤
$ echo|sed "s/^/$RANDOM.rmvb_/g"
29328.rmvb_
鏌ユ壘褰撳墠鐩綍涓嬬殑鐩綍鏂囦歡騫跺皢鐩稿璺緞鏇挎崲涓虹粷瀵硅礬寰?br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; word-wrap: break-word;" />find . -type f | sed -n "s/\./$PWD/p"
sed: -e expression #1, char 19: unknown option to `s'
浠庤娉曚笂鐪嬶紝娌℃湁浠諱綍闂錛涗絾鐢變簬鍙橀噺涓寘鍚湁“/”浣滀負鍒嗛殧絎︼紝榪欎細鍜宻ed鐨勬浛鎹㈡搷浣滅殑鍒嗛殧絎?#8220;/”寮曡搗娣鋒穯錛涙墍浠ワ紝鍙涓嶄嬌鐢?#8220;/”鍋氬垎闅旂灝卞彲浠ヨВ鍐寵繖涓棶棰橈紝濡傛灉浣跨敤“%”鑰屼笉鏄?#8220;/”鏉ヤ綔涓簊ed鐨勬浛鎹㈡搷浣滅殑鍒嗛殧絎︼紝灝變笉浼氬嚭閿欍傚叾瀹炰嬌鐢?鎴?鎴?浣滀負鍒嗛殧絎︿篃鏄彲浠ョ殑錛屽彧瑕佷笉浼氫笌鏇挎崲涓湁鐩稿悓鐨勮屼笖涓嶆槸鍏冨瓧絎︾殑鐗規畩絎﹀彿閮芥槸鍙互鐨勶紱浣跨敤鏃跺彲浠ユ牴鎹儏鍐電伒媧婚夋嫨銆?br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; word-wrap: break-word;" />find . -type f | sed -n "s%\.%$PWD%p"
find . -type f | sed -n "s#\.#$PWD#p"
2.sed鍛戒護浣跨敤鍗曞紩鍙風殑鎯呭喌涓嬶紝浣跨敤'"$var"'寮曠敤
綾諱技錛屾垜浠彲浠ョ湅鍒?br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; word-wrap: break-word;" />
$ echo|sed 's/^/'"$RANDOM"'.rmvb_/g'
31338.rmvb_
sed涓墽琛屽閮ㄥ懡浠?br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; word-wrap: break-word;" />
1.sed鍛戒護浣跨敤鍗曞紩鍙風殑鎯呭喌涓嬩嬌鐢?`shell command`'鎴栬?$(shell command)'寮曠敤鍛戒護鎵ц鐨勭粨鏋?br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; word-wrap: break-word;" />
榪樻槸浠ヤ笂闈㈡渚嬪垎鏋愶紝渚嬪瓙濡備笅
$ echo|sed 's/^/'`echo $RANDOM`'.rmvb_/g'
8063.rmvb_
$ echo|sed 's/^/'$(echo $RANDOM)'.rmvb_/g'
18554.rmvb_
$ echo|sed 's/^/'$(date +"%Y%m%d")'.rmvb_/g'
20120108.rmvb_
$ echo|sed "s/^/$(date +"%Y%m%d").rmvb_/g"
20120108.rmvb_
$ echo|sed "s/^/`echo $RANDOM`.rmvb_/g"
4988.rmvb_
鎬葷粨
鍦╯ed璇彞閲岄潰錛屽彉閲忔浛鎹㈡垨鑰呮墽琛宻hell鍛戒護錛屽弻寮曞彿姣斿崟寮曞彿灝戠粫涓浜涘集瀛?/p>
[root@~]# diff -urNa dir1 dir2
銆銆-a Treat all files as text and compare them line-by-line, even if they do not seem to be text.
銆銆-N, --new-file
銆銆銆銆In directory comparison, if a file is found in only one directory, treat it as present but empty in the other directory.
銆銆-r When comparing directories, recursively compare any subdirectories found.
銆銆-u Use the unified output format.
姣旇緝鏂囦歡澶筪iff錛屼篃鍙互姣旇緝鏂囦歡MD5鍒楄〃銆備笅闈㈠懡浠ゅ彲浠ヨ幏鍙栨枃浠跺す涓枃浠秏d5鍒楄〃
find /home/ -type f -not \( -name '.*' \) -exec md5sum {} \;
璇存槑錛?1) /home/鏂囦歡鐩綍
銆銆 (2) -type f 鏂囦歡綾誨瀷涓烘櫘閫氭枃浠?/p>
銆銆 (3) -not \( -name '.*' \) 榪囨護鎺夐殣钘忔枃浠躲傚彲浠ヨ繃婊ゆ帀涓嶉渶瑕佽冭檻鐨勬枃浠?/p>
(4) -exec md5sum {} \; 瀵規瘡涓枃浠舵墽琛宮d5sum鍛戒護
鐢╰ar鍛戒護鍘嬬緝鍚庯紝姣旇緝鏂囦歡鐨凪D5鏄笉琛岀殑銆倀ar鍘嬬緝浼氬甫涓婃枃浠剁殑鏃墮棿

sed -i '88 r b.file' a.file #鍦╝.txt鐨勭88琛屾彃鍏ユ枃浠禸.txt awk '1;NR==88{system("cat b.file")}' a.file > a.file sed -i '/regex/ r b.txt' a.txt # regex鏄鍒欒〃杈懼紡 awk '/target/{system("cat b.file")}' a.file > c.file 鍘熸枃浠訛細
[root@xiaowu shell]# cat -n file 1 aaaa 2 bbbb 3 cccc 4 dddd 鐜板湪瑕佸湪絎簩琛屽嵆“bbbb”琛岀殑涓嬮潰娣誨姞涓琛岋紝鍐呭涓?#8220;xiaowu”
[root@xiaowu shell]# sed '/bbbb/a\xiaowu' file aaaa bbbb xiaowu cccc dddd 濡傛灉瑕佸姞涓よ“xiaowu”鍙互鐢ㄤ竴涓嬭鍙ワ紝娉ㄦ剰鐢?#8220;\n”鎹㈣
[root@xiaowu shell]# sed '/bbbb/a\xiaowu\nxiaowu' file aaaa bbbb xiaowu xiaowu cccc dddd 濡傛灉瑕佸湪絎簩琛屽嵆“bbbb”琛岀殑涓婃坊鍔犱竴琛岋紝鍐呭涓?#8220;xiaowu”錛屽彲浠ユ妸鍙傛暟“a”鎹㈡垚“i”
[root@xiaowu shell]# sed '/b/i\xiaowu' file aaaa xiaowu bbbb cccc dddd 浠ヤ笂鏂囦歡涓彧鏈変竴琛屽尮閰嶏紝濡傛灉鏂囦歡涓湁涓よ鎴栬呭琛屽尮閰嶏紝緇撴灉鏈夋槸濡備綍鍛紵
[root@xiaowu shell]# cat -n file 1 aaaa 2 bbbb 3 cccc 4 bbbb 5 dddd [root@xiaowu shell]# sed '/bbbb/a\xiaowu' file aaaa bbbb xiaowu cccc bbbb xiaowu dddd 鐢辯粨鏋滃彲鐭ワ紝姣忎釜鍖歸厤琛岀殑涓嬩竴琛岄兘浼氳娣誨姞“xiaowu”
閭d箞濡傛灉鎸囧悜鍦ㄧ浜屼釜“bbbb”鐨勪笅涓琛屾坊鍔犲唴瀹?#8220;xiaowu”錛岃濡備綍鎿嶄綔鍛紵
鍙互鑰冭檻鍏堣幏鍙栫浜屼釜“bbbb”琛岀殑琛屽彿錛岀劧鍚庢牴鎹鍙峰湪姝よ鐨勪笅涓琛屾坊鍔?#8220;xiaowu”
鑾峰彇絎簩涓?#8220;bbbb”琛岀殑琛屽彿鐨勬柟娉曪細
鏂規硶涓錛?/p>
[root@xiaowu shell]# cat -n file |grep b |awk '{print $1}'|sed -n "2"p 4 鏂規硶浜岋細
[root@xiaowu shell]# sed -n '/bbbb/=' file |sed -n "2"p 4 鐢辯粨鏋滃彲鐭ョ浜屼釜“bbbb”琛岀殑琛屽彿涓?錛岀劧鍚庡啀鍦ㄧ鍥涜鐨勫墠鎴栧悗娣誨姞鐩稿簲鐨勫唴瀹?
[root@xiaowu shell]# sed -e '4a\xiaowu' file aaaa bbbb cccc bbbb xiaowu dddd [root@xiaowu shell]# sed -e '4a\xiaowu\nxiaowu' file aaaa bbbb cccc bbbb xiaowu xiaowu dddd 鍚戞寚瀹氳鐨勬湯灝炬坊鍔犳寚瀹氬唴瀹癸紝姣斿鍦?#8220;ccccc”琛岀殑琛屽熬浠嬬粛“ eeeee”
[root@xiaowu shell]# cat file aaaaa bbbbb ccccc ddddd [root@xiaowu shell]# sed 's/cc.*/& eeeee/g' file aaaaa bbbbb ccccc eeeee ddddd
鏈変袱涓壒鐐癸細
1錛氫嬌鐢?r鍙傛暟
2錛氬湪鐩綍鍚庨潰浣跨敤"."鍙?br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; word-wrap: break-word;" />
榪欐牱鐨勮瘽灝卞彲浠ユ妸/opt/merkle 鐩綍鍜屽瓙鐩綍閲岄潰鐨勬枃浠跺叏閮ㄤ笅杞藉埌鏈湴浜嗐?/span>
if [ $STATUS == "OK" ]; then
echo "OK"
fi
鍦ㄨ繍琛屾椂鍑虹幇浜?#8220; [: =: unary operator expected” 鐨勯敊璇紝灝變竴鐩存壘涓嶅埌鍘熷洜錛屽皾璇曚簡鍒犻櫎絳夊彿涓や晶鐨勭┖鏍煎拰鎷彿閲岀殑絀烘牸閮戒笉綆$敤銆傛渶鍚?a target="_blank" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: #6795b5; text-decoration: none; cursor: pointer; word-wrap: break-word;">baidu浜嗕竴涓嬶紝鎵嶆壘鍒板師鍥狅紝鍦ㄦ潯浠惰〃杈懼紡澶栧啀娣誨姞涓灞?#8220;[]”錛屽氨涓嶄細鍑洪敊浜嗭紝濡備笅錛?/span>
if [[ $STATUS = "OK" ]]; then
echo "OK"
fi
絀跺叾鍘熷洜錛屾槸鍥犱負濡傛灉鍙橀噺STATUS鍊間負絀猴紝閭d箞鏉′歡琛ㄨ揪寮?/span>灝辨垚浜?[ = "OK"] 錛屾樉鐒?[ 鍜?"OK" 涓嶇浉絳夊茍涓旂己灝戜簡 [ 絎﹀彿錛屾墍浠ユ姤浜嗚繖鏍風殑閿欒銆傚綋鐒朵笉鎬繪槸鍑洪敊錛屽鏋滃彉閲廠TATUS鍊間笉涓虹┖錛岀▼搴忓氨姝e父浜嗭紝鎵浠ヨ繖鏍風殑閿欒榪樻槸寰堥殣钄界殑銆?/span>
鎴栬咃紝鐢ㄤ笅闈㈢殑鏂規硶涔熻兘閬垮厤榪欑閿欒錛?/span>
if [ "$STATUS"x == "OK"x ]; then
echo
"OK"
fi銆?/span>
褰撶劧錛寈涔熷彲浠ユ槸鍏朵粬瀛楃銆傞『渚挎彁涓鐐癸紝shell涓湁娌℃湁鍙屽紩鍙峰湪寰堝鎯呭喌涓嬫槸涓鑷寸殑銆?/span>
杞嚜錛?a rel="nofollow" target="_blank" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; color: #336699; text-decoration: none; cursor: pointer; word-wrap: break-word;">http://hi.baidu.com/vishare/blog/item/bd8ab9ee289753252cf53417.html
Bash涓繕鍙互浣跨敤鏁扮粍鍙橀噺,鍏惰祴鍊兼湁涓ょ:
(1) name = (value1 ... valuen) 姝ゆ椂涓嬫爣浠?寮濮?br>(2) name[index] = value
鏁扮粍涓嬫爣鐨勮寖鍥存病鏈変換浣曢檺鍒?鍚屾椂涔熶笉蹇呬嬌鐢ㄨ繛緇殑鍒嗛噺.
echo ${arrDest[$i]}
let i++
done
=======================紺轟緥錛?for寰幆===============================
arrSource=("/home/800hr/htdocs/login_jump.php")
arrDest=(ithr elehr buildhr bankhr healthr ctvhr chenhr mechr clothr cneduhr 56hr tourhr foodhr greenhr cnlawhr waimaohr)
for outer in ${arrSource[*]}
#${arrSource[*]} 鏄暟緇勪腑鐨勬墍鏈夊厓绱?/span>do
for inner in ${arrDest[*]}
do
echo "ln -s $outer /home/${inner}/campus/"
done
done
1銆?span>
澶勭悊澶氳妯″紡絀洪棿錛?/span>N銆?/span>D銆?/span>P錛夈?/span>2銆?span> 閲囩敤淇濇寔絀洪棿鏉ヤ繚瀛樻ā寮忕┖闂寸殑鍐呭騫朵嬌浠栦滑鍙敤浜庡悗緇殑鍛戒護錛?/span>H銆?/span>h銆?/span>G銆?/span>g銆?/span>x錛夈?/span>
3銆?span> 1銆?nbsp;褰?/span>sed鍚庨潰甯︽湁涓涓互涓婄殑鍛戒護鏃訛紝瀹冪殑澶勭悊欏哄簭鏄繖鏍風殑錛?/span>
涓嬈¤鍏ヤ竴琛屽埌妯″紡絀洪棿錛岀劧鍚庡皢鎵鏈夌殑鍛戒護搴旂敤浜庤琛岋紱鑰屼笉鏄竴嬈″皢涓涓懡浠や綔鐢ㄤ笌鎵鏈夎錛?/span>
2銆?nbsp;褰撴煇涓潯浠跺悗闈㈡湁{}鏃訛紝{}閲岄潰鐨勫懡浠や緷嬈′綔鐢ㄤ簬婊¤凍璇ユ潯浠剁殑琛岋紱
3銆?nbsp;h/H/g/G鍛戒護鎿嶄綔緙撳啿鍖烘椂錛岄兘浼氬湪鐩殑緙撳啿鍖哄悗鍔犱竴涓崲琛岋紙鍗充嬌璇ョ紦鍐插尯鏃犲唴瀹癸級錛岀劧鍚庡鍒舵垨榪藉姞婧愮紦鍐插尯鍐呭鍦ㄨ鎹㈣絎︿箣鍚庯紱
4銆?nbsp;娌℃湁浣跨敤-n鍙傛暟鏃訛紝褰撲竴琛屾墽琛屽畬鎵鏈夊懡浠ゅ悗錛?/span>sed浼氶粯璁ゆ墦鍗版渶緇堟ā寮忕┖闂翠腑鐨勫唴瀹癸紱
濡傛灉浣跨敤-n鍙傛暟錛屽彧鏈夊簲鐢ㄤ簡p/P鍛戒護鐨勬ā寮忕┖闂村唴瀹規墠浼氳鎵撳嵃鍑烘潵銆?/span>
鏈枃鍑鴻嚜 “licong” 鍗氬錛岃鍔″繀淇濈暀姝ゅ嚭澶?a >http://licong.blog.51cto.com/542131/204226
$^[[A^[[A^[[A
鎸夊垹闄ら敭錛屽嚭鏉ョ殑鏄繖涓細
$ ^H^H^H^H^H^H^H
鍙兘鐢?Ctrl+BackSpace 鎵嶈兘鍒犻櫎鍏夋爣宸﹁竟鐨勫唴瀹?..鐢ㄧ殑閭d釜涓嶄範鎯晩~~~錛侊紒錛?- -b
鍚庢潵闂埌 Wells 錛屽師鏉ュ彧闇瑕佸仛涓涓皬灝忕殑璁懼畾錛屽湪Console涓惎鐢細
$set -o emasc
鍘熷洜鍚庢潵涓婄綉鏌ヤ簡涓涓嬶紝鏆備笖寮曠敤涓涓嬨奆reeBSD浣跨敤澶у叏銆嬩腑鐨勪竴孌靛唴瀹癸細
-----------------------------------------------------------------------------------------------
閰嶇疆鐢ㄦ埗shell
銆銆浜嬪涓妔h鑸嘽sh錛屽茍涓嶆槸鏅氱敤鎴剁殑鏈浣抽伕鎿囷紝鍥犵偤閫欏叐鍊媠hell鍦ㄦ槗鐢ㄦф柟闈㈠仛鐨勪笉澶犲ソ錛屼緥濡傚懡浠よ綬?杓姛鑳戒笉寮楓佷笉鑳藉埄鐢ㄧ啽閸甸噸寰╁煼琛屽懡浠ょ瓑銆傝純鏂扮殑shell錛屽bash鍜宼csh閮藉叿鏈夐欎簺鏂逛究鐢ㄦ埗浣跨敤鐨勫姛鑳斤紝浣?蹇呴爤瀹夎浜嗛欎簺shell紼嬪簭涔嬪悗錛屾墠鑳芥洿鏀規櫘閫氱敤鎴剁殑shell璦疆浠ヤ嬌鐢ㄩ欎簺shell紼嬪簭銆傛洿鏀圭敤鎴剁殑shell 鍙互浣跨敤pw銆乿ipw鎴朿hsh銆?/p>
銆銆閫欏叐鍊媠hell鍒嗗垾閬電収sh鍜宑sh鐨勯ⅷ鏍鹼紝鍥犳鍠滃ソcsh棰ㄦ牸鐨勫彲浠ラ伕鎿噒csh錛岃屽枩姝h棰ㄦ牸鐨勯伕鎿?bash銆傞櫎浜嗛欏叐紼畇hell涔嬪錛岄倓鏈塳sh銆亃sh絳塻hell鍙緵閬告搰銆傚鏋滃皪鍏╃óshell娌掓湁鍋忓ソ錛屽彲浠?閬告搰bash錛屽畠鏄竴鍊婫NU杌熶歡錛屾瘮妯欏噯sh鍔熻兘寮峰ぇ鐨勫銆?/p>
銆銆浣跨敤浜嗛欏叐浜涘寮峰瀷shell涔嬪悗錛岀敤鎴跺氨鍙互浣跨敤shell鎻愪緵鐨勫懡浠よ綬ㄨ集鍔熻兘銆傛寜鐓х繏鎱g殑涓嶅悓錛屽彲浠ラ伕 鎿噕i棰ㄦ牸鐨勭法杓柟寮忔垨emacs棰ㄦ牸鐨勬柟寮忥紝緙虹渷鐐篹macs鏂瑰紡錛岄欑ó鏂瑰紡浣跨敤鏂瑰悜閸典締鍥炴函鍩瘋閬庣殑鍛戒護錛屽茍閫茶 淇敼錛岃寁i棰ㄦ牸浣跨敤瀛楁瘝鍛戒護浣滅法杓嵉錛屼緥濡備嬌鐢╤銆乯銆乲銆乴鍥涘嬮嵉渚嗙Щ鍕曞厜妯欙紝vi棰ㄦ牸鐨勫ソ铏曟槸涓嶄嬌鐢ㄥ熀鏈嵉鐩や箣 澶栫殑鎺у埗閸碉紝鍥犺屽彲浠ラ仼鐢ㄤ簬浠諱綍緄傜璦倷錛屽茍涓旈茶綬ㄨ集鏅傛墜涓嶉渶闆㈤枊鍩烘湰閸電洡錛岀啛綬存搷浣滀箣鍚庢渶鐐哄揩鎹楓俥macs棰ㄦ牸 姣旇搗vi棰ㄦ牸鏇撮仼鍚堝緸鍊嬩漢璦堢畻姍熻綁鍚慤nix鐨勪嬌鐢ㄨ呯殑緲掓叄銆俠ash, ksh ,zsh涓嬩嬌鐢ㄤ笅闈㈢殑鍛戒護鍦╡macs 棰ㄦ牸鍜寁i棰ㄦ牸鍒囨彌錛?/p>
銆銆bash$ set -o emacs
銆銆bash$ set -o vi
銆銆tcsh涓嬌鐢ㄤ笉鍚岀殑鍛戒護錛?/p>
銆銆% bind emacs
銆銆% bind vi
銆銆閭勫彲浠ョ偤甯哥敤鐨勫懡浠よō緗垾鍚嶏紝綈″寲鐢ㄦ埗杓稿叆錛屼緥濡傦細
銆銆bash$ alias ec=”echo This is a alias”
銆銆bash$ ec
銆銆This is a alias
銆銆shell鐢ㄤ簬鏂逛究鐢ㄦ埗鎿嶄綔鐨勫彟涓闋呰兘鍔涙槸鑷嫊瑁滃叏鍛戒護鎴栨枃浠跺悕鐨勫姛鑳斤紝鍥犵偤FreeBSD涓嬬殑鏂囦歡鍚嶅彲鑳藉緢 闀鳳紝灝囧畠鍊戝叏閮ㄨ幾鍏ユ瘮杓冮夯鐓┿備簨瀵︿笂鍙互杓稿叆閮ㄥ垎鍚嶅瓧錛岀劧鍚庢寜Tab閸碉紙鍦╲i棰ㄦ牸涓嬫槸閫g簩鍏╂鎸塃sc閸碉級錛宻hell 灝囪嚜鍕曡鍏ㄦ枃浠跺悕鐨勫墿浣欓儴鍒嗐傚鏋滃凡綞撹幾鍏ョ殑閫欓儴鍒嗗悕瀛椾笉鑳界⒑瀹氬叿楂旂殑鍛戒護鎴栨枃浠訛紝閭d箞shell鍙皣鑳界⒑瀹氱殑閮?鍒嗚涓婏紝鐒跺悗闊塊埓閫氱煡浣跨敤鑰呯辜綰岃幾鍏ヤ互鏄庣⒑鍏烽珨鐨勬枃浠躲?/p>
銆銆浜嬪涓婂嵆浣垮湪鍩烘湰鐨剆h鎴朿sh涓嬶紝涔熷彲浠ヤ嬌鐢?“*” 絳夌壒孌婂瓧絎︼紝鐢ㄦā寮忓尮閰嶇殑鏂瑰紡渚嗙啊鍖栬幾鍏ャ?/p>
銆銆bash$ cd /usr/loca*
銆銆bash$ pwd
銆銆/usr/local
銆銆Unix涓殑澶氭暩紼嬪簭閮藉叿鍌欐ā寮忓尮閰嶇殑铏曠悊鑳藉姏錛岃宻hell鐨勬ā寮忓尮閰嶅姛鑳芥渶鐐哄父鐢ㄣ俿hell鍙互浣跨敤閫?浜涚壒孌婃ā寮忎締閰嶇疆澶氬嬫枃浠訛紝閬斿埌綈″寲鎿嶄綔鐨勭洰鐨勩傚鏋滆鐔熺反鎺屾彙Unix錛屽繀闋堟帉鎻℃ā寮忓尮閰嶃?/p>
銆銆鐣惰│鍦栧湪bash涓嬭幾鍏ユ饑瀛楃殑鏅傚欙紝闄や簡蹇呴爤璦疆緄傜灞ц兘鎺ュ彈8浣嶅瓧絎︿箣澶栵紙鍩瘋stty pass8鍛戒護 錛夛紝閭勯渶瑕佽ō緗産ash鐨勮幾鍏ヨ幾鍑鴻綁鎻涳紝鍙互鍦ㄧ櫥閷勮叧鏈?profile鏂囦歡涓寘鎷互涓嬭ō緗細
銆銆bind 'set convert-meta off'
銆銆bind 'set meta-flag on'
銆銆bind 'set output-meta on'
鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/chenguoda/archive/2008/06/08/2524292.aspx
| next 鍙互綆鍗曠悊瑙d負璺寵繃鍚庨潰鐨勪唬鐮侊紝濡傛灉next琚墽琛岋紝閭d箞瀹冨悗闈㈢殑浠g爜灝遍兘涓嶄細琚墽琛屼簡銆?/td> |
涓涓猘wk 紼嬪簭鏄竴瀵逛互妯″紡(pattern) 涓庡ぇ鎷彿妗嗚搗鏉ョ殑鎿嶄綔(action) 緇勫悎鑰屾垚鐨勶紝鎴栬錛岃繕浼氬姞涓婂疄鐜版搷浣滅粏鑺傜殑鍑芥暟(function ) 銆傞拡瀵規瘡涓尮閰嶄簬杈撲漢鏁版嵁鐨勬ā寮忥紝鎿嶄綔浼氳鎵ц錛屼笖鎵鏈夋ā寮忛兘浼氶拡瀵規瘡鏉¤緭浜鴻褰曡屾鏌ャ傛ā寮忔垨鎿嶄綔鍙渷鐣ュ叾涓竴涓傚鏋滄ā寮忕渷鐣ワ紝鍒欐搷浣滃皢琚簲鐢ㄥ埌姣忔潯杈撲漢璁板綍; 濡傛灉鎿嶄綔鐪佺暐錛屽垯榛樿鎿嶄綔涓烘墦鍗板尮閰嶄箣璁板綍鍦ㄦ爣鍑嗚緭鍑轟笂銆備互涓嬫槸浼犵粺awk 紼嬪簭鐨勯厤緗?
pattern {action} 濡傛ā寮忓尮閰嶏紝鍒欐墽琛屾搷浣?
pattern {action} 濡傛ā寮忓尮閰嶏紝鍒欐墦鍗拌褰?
铏界劧錛屾ā寮忓鍗婃槸鏁板瓧鎴栧瓧絎︿覆琛ㄨ揪寮忥紝涓嶈繃awk 浠ヤ繚鐣欏瓧BEGIN 涓嶦ND 鎻愪緵涓ょ鐗規畩妯″紡銆?
涓嶣EG 宸 鍏寵仈鐨勬搷浣滃彧浼氭墽琛屼竴嬈★紝鍦ㄤ換浣曞懡浠よ鏂囦歡鎴栦竴鑸懡浠よ璧嬪艱澶勭悊涔嬪墠錛屼絾鏄湪浠諱綍寮澶寸殑涓V 閫夐」鎸囧畾宸茬粡瀹屾垚涔嬪悗銆?
END 鎿嶄綔涔熸槸鍙墽琛屼竴嬈★紝鐢ㄤ簬鎵鏈夎緭鍏ユ暟鎹凡琚鐞嗗畬涔嬪悗銆傚畠澶氬崐鐢ㄤ簬浜х敓鎽樿鎶ュ憡錛屾垨鏄墽琛屾竻闄ゆ搷浣溿?
BEGIN 涓嶦ND 妯″紡鍙互鏄換鎰忛『搴忥紝鍙互瀛樺湪浜巃wk 紼嬪簭鍐呯殑浠諱綍浣嶇疆銆備笉榪囷紝涓轟簡鏂逛究錛屾垜浠氬父灝咮EGIN 妯″紡鏀懼湪紼嬪簭鐨勭涓涓綅緗紝鑰屽皢END 妯″紡鏀懼湪鏈鍚庛?
2. 娉ㄩ噴涓庣┖鐧?
awk 閲岀殑娉ㄩ噴鏄粠# 寮濮嬪埌璇ヨ緇撴潫錛屽氨鍍忓湪Shell 閲岄偅鏍楓傜┖琛岀瓑鍚屼簬絀虹殑娉ㄩ噴銆?
3. 瀛楃涓蹭笌瀛楃涓茶〃杈懼紡
awk 瀛楃涓插寘鍚浂鑷沖涓瓧絎︼紝涓斿湪瀛楃涓茬殑闀垮害涓婃病鏈夐檺鍒訛紝瑙嗗彲鐢ㄥ唴瀛樿屽畾銆?
瀛楃涓茬殑姣旇緝錛岀敤鐨勬槸浼犵粺鐨勫叧緋昏繍綆楃錛?=( 鐩哥瓑) 銆?=( 涓嶇瓑) 銆?lt;( 灝忎簬) 銆?lt;=( 灝忎簬絳変簬) 銆?gt;( 澶т簬) 錛屼互鍙?gt;=( 澶т簬絳変簬銆嬨傛瘮杈冨悗榪斿洖l 涓虹湡錛? 涓哄亣銆傛瘮杈冧笉鍚岄暱搴︾殑瀛楃涓詫紝涓斿叾涓竴涓瓧絎︿覆涓哄彟涓涓殑鍒濆瀛愬瓧絎︿覆鏃訛紝杈冪煭鐨勪細瀹氫箟涓哄皬浜庤緝闀跨殑閭d釜錛屽洜姝わ紝“A ”< “AA ”鐨勫間負鐪熴?
awk 騫舵棤鐗規畩鐨勫瓧絎︿覆鎺ョ畫榪愮畻絎︺備篃灝辨槸璇達紝涓や釜榪炵畫瀛楃涓詫紝浼氳嚜鍔ㄥ湴榪炴帴鍦ㄤ竴璧楓備互涓嬫瘡涓緇勮祴鍊艱緗爣閲忓彉閲忋備負鐩稿悓鐨勫叿鏈夊洓涓瓧絎︾殑瀛楃涓?
s = “ABCD ”
s = “AB ”“CD ”
s = “A ”“B ”“CD ”
s = “A ”“B ”“C ”“D ”
瀛楃涓蹭笉闇瑕佹槸甯告暟錛屽鏋滄垜浠戶緇笂榪扮殑璧嬪?
t= s s s
鍒檛 鐨勫間負“ABCDABCDABCD “銆?
灝嗘暟瀛楄漿鎹負瀛楃涓詫紝閫氳繃鏁板瓧榪炴帴絀哄瓧絎︿覆鍗沖彲
n =123 錛?
鎺ョ潃鏄細
s = ““ n 錛屾妸鍊?#8220;123 ”璧嬬粰s 銆?
awk 鍔熻兘寮哄ぇ鐨勫湴鏂瑰ぇ澶氭潵鑷簬瀹冨姝e垯琛ㄨ揪寮忕殑鏀寔銆傛湁涓や釜榪愮畻絎︼細~( 鍖歸厤) 涓?~( 涓嶅尮閰? 璁゛wk 鏇村鏄撲嬌鐢ㄦ鍒欒〃杈懼紡錛?#8221;ABC ”~ ”^[A-Z]+$ “錛岀粨鏋滀負鐪熴?
4. 鏁板間笌鏁板艱〃杈懼紡
鎵鏈塧wk 閲岀殑鏁板瓧錛岄兘浠ュ弻綺劇‘搴︾殑嫻偣鍊艱〃紺恒傛誕鐐規暟鍙互鍖呭惈涓涓湯绔互瀛楁瘝e( 鎴朎) 鎵琛ㄧず鐨?0 嬈℃柟鎸囨暟浠ュ強鍙夊湴甯︽璐熷彿鐨勪竴涓暣鏁般備婦渚嬫潵璇?0.03125, 3.125e-2, 3125e-5 涓?.003125E1 錛屽悓鏍烽兘鏄〃紺?/32 銆傚洜涓篴wk 閲屾墍鏈夌畻鏈兘鏄誕鐐圭畻鏈?
awk 騫舵病鏈夋彁渚涘瓧絎︿覆杞暟瀛楃殑鍑芥暟錛屼笉榪嘺wk 鐨勫仛娉曞緢綆鍗曪細鍙鍔犱釜闆跺埌瀛楃涓查噷錛屼緥濡傦細s="123" 錛屾帴鐫鏄痭=0+s 錛屼究灝嗘暟瀛?23 璧嬪肩粰n 浜嗐?
5. awk 鐨勬暟鍊艱繍綆楃
琛? 涓錛歛wk 鐨勬暟鍊艱繍綆楃( 浼樺厛綰х敱澶у埌灝忔帓鍒?
榪愮畻絎?nbsp; 璇存槑
++ -- 澧炲姞涓庡噺灝? 鍓嶇疆鎴栧悗緗?
^ ** 鎸囨暟( 鍙崇粨鍚堟?
! + - 闈炪佷竴鍏?unary) 鍔犲彿銆佷竴鍏冨噺鍙?
* / % 涔樸侀櫎銆佷綑鏁?
+ - 鍔犮佸噺
< <= == != > >= 姣旇緝
&& 閫昏緫AND( 綆鍐?
|| 閫昏緫OR( 綆鍐?
?: 涓夊厓鏉′歡寮?
= += -= *= /= %= ^= **= 璧嬪? 鍙崇粨鍚堟?
6. 鏍囬噺鍙橀噺
淇濆瓨鍗曚竴鍊肩殑鍙橀噺鍙仛鏍囬噺鍙橀噺銆?
a wk 鐨勫彉閲忓悕縐板繀欏諱互ACSII 瀛楁瘝鎴栦笅鍒掔嚎寮濮嬶紝鐒跺悗閫夋嫨鎬у湴鎺ヤ笂瀛楁瘝銆佷笅鍒掔嚎鍙婂瓧銆傚洜姝わ紝鍙橀噺鍚嶇О瑕佸尮閰嶆鍒欒〃杈懼紡[A-Za-z-][A-Za-z_0-9]* 銆傚彉閲忓悕縐板湪瀹為檯涓婂茍娌℃湁闀垮害鐨勯檺鍒躲俛wk 鐨勫彉閲忓悕縐版槸涓庡ぇ灝忓啓鏈夊叧鐨?foo, Fo 銆備笌FOO 鏄畬鍏ㄤ笉鍚岀殑涓変釜鍚嶇О銆備竴鑸嬌鐢ㄤ笂浠ュ強寤鴻鐢ㄦ硶鏄? 鍏繪垚涔犳儻錛屽皢灞閮ㄥ彉閲忓叏璁句負灝忓啓銆佸叏灞鍙橀噺絎竴涓瓧姣嶄負澶у啓錛岃屽唴寤哄彉閲忓垯鍏ㄦ槸澶у啓銆?
7. 鏁扮粍鍙橀噺
awk 鍏佽鍦ㄦ暟緇勫悕縐頒箣鍚庯紝浠ユ柟鎷彿灝嗕換鎰忔暟瀛楁垨瀛楃涓茶〃杈懼紡 鎷搗鏉ヤ綔涓虹儲寮曘備緥濡?
telephone["Alice"]= “555-0134"
telephone["Bob"]= “555-0135"
telephone["Carol”]= “555-0136"
telephone["Don"]= “555-0141"
浠ヤ換鎰忓間負绱㈠紩鐨勬暟緇勶紝縐頒箣涓哄叧鑱旀暟緇勶紝鍥犱負瀹冧滑鐨勫悕縐頒笌鍊兼槸鐩稿叧鑱旂殑銆傞噸瑕佺殑鏄紝awk 灝嗗叾搴旂敤浜庢暟緇勪腑錛屽厑璁告煡鎵? find ) 銆佹彃鍏?insert ) 浠ュ強鍒犻櫎( remove) 絳夋搷浣滐紝鍦ㄤ竴瀹氱殑鏃墮棿鍐呭畬鎴愶紝涓庡瓨鍌ㄥ灝戦」鐩棤鍏熾?
涓涓彉閲忎笉鑳藉悓鏃剁敤浣滄爣閲忓彉閲忓拰鏁扮粍鍙橀噺銆傚綋浣犲簲鐢╠elet 銆傝鍙ュ垹闄ゆ暟緇勭殑鍏冪礌
(element] 鐨勬椂鍊欙紝涓嶄細鍒犻櫎瀹冪殑鍚嶇О銆傚洜姝ゃ傚儚榪欐牱鐨勪唬鐮?
x[1]=3
delete x
x=789
浼氬紩鍙慳wk 鍙戝嚭鎻愮ず錛屽憡璇変綘涓嶅彲浠ョ粰鏁扮粍鍚嶇О璧嬪?
8. 鍛戒護琛屽弬鏁?
awk 閫氳繃鍐呭緩鍙橀噺ARGC( 鍙傛暟璁℃暟) 涓嶢RGV( 鍙傛暟鍚戦噺錛屾垨鍙傛暟鍊? 錛岃鍛戒護琛屽弬鏁?
鍙敤銆備笅闈㈢畝鐭殑紼嬪簭璇存槑鍏剁敤娉?
[root@local~]#cat showargs.awk
BEGIN{
print ”ARGC= ”錛孉RGC
for (k=0;k<ARGC; k++)
print "ARGV[”k”]=[”ARGV[k] “
}
鍐嶆潵鐪嬬湅灝嗗畠鐢ㄥ湪涓鑸琣wk 鍛戒護琛屼笂錛屼細浜х敓浠涔堟牱鐨勭粨鏋?
[root@local~]# awk -v One=1 -v Two=2 -f showargs.awk Three=3 file1 Four=4 filet2 file3
ARGC=6
ARGV[0]=[awk]
ARGV[1]=[Three=3]
ARGV[2]=[file1]
ARGV[3]=[Four=4]
ARGV[4]=[file2]
ARGV[5]=[file3]
9. 鐜鍙橀噺
awk 鎻愪緵璁塊棶鍐呭緩鏁扮粍ENV 宸ON 涓墍鏈夌殑鐜鍙橀噺:
[root@local~]#awk 'BEGIN {print ENVIRON["HOME"];print ENVIRON["USER]} ‘
/home/Jones
hones
閫氬父浣犲簲灝咵NVIRON 鐪嬫垚鏄竴涓彧璇繪暟緇勩?
10. 妯″紡
妯″紡鐢卞瓧絎︿覆涓?/ 鎴栨暟鍊艱〃杈懼紡鏋勫緩鑰屾垚銆傚父鐢ㄧ殑妯″紡濡備笅錛?
NF==0 閫夊畾絀鴻褰?
NF>3 閫夊畾鎷ユ湁涓変釜瀛楁浠ヤ笂鐨勮褰?
NR<5 閫夊畾絎?1 鍒扮 4 鏉¤褰?
(FNR==3)&&(FILENAME~/[.] [ch]$/) 鏉ユ簮浜?C 婧愭枃浠朵腑閫夊畾璁板綍 3
$1~/Jones/ 閫夊畾瀛楁 1 閲屾湁 . ” jones “鐨勮褰?
/[Xx][Mm][Ll]/ 閫夊畾鍚湁‘ 'XML' 銆傜殑璁板綍錛屽茍蹇界暐澶у皬鍐欏樊寮?
$0~/[Xx][Mm][Ll]/ 鍚屼笂
11. 鎿嶄綔
浠ユ渶綆鍗曠殑褰㈠紡鏉ヨ錛岀函print 鎰忔寚鍦ㄦ爣鍑嗚緭鍑轟笂錛屾墦鍗板綋鍓嶇殑杈撳叆璁板綍($0) 錛屾帴鐫鏄緭鍑鴻褰曞垎闅斿瓧絎?ORS 鐨勫鹼紝榛樿涓哄崟涓鎹㈣瀛楃銆傚洜姝わ紝涓嬮潰榪欎簺紼嬪簭鎵鍋氱殑鍏ㄦ槸鐩稿悓鐨勬搷浣?
1 妯″紡涓虹湡錛岄粯璁ゆ搷浣滀負鎵撳嵃
NR>0 {print} 鏈夎褰曟椂鎵撳嵃( 鎭掍負鐪?
1 {print} 妯″紡涓虹湡銆傚垯鎵撳嵃錛岃繖鏄粯璁ゅ?
{print} 鏃犳ā寮忓垯瑙嗕負鐪燂紝鏄庣‘鐨勬墦鍗幫紝榪欐槸榛樿鍊?
{print $0} 鐩稿悓錛屼絾鎵撳嵃鏄庣‘鐨勫?
涓嬮潰鐨勪緥瀛愬凡緇忔槸瀹屾暣鐨刟wk 紼嬪簭銆傚湪姣忎竴涓腑錛屾垜浠兘鍙樉紺哄墠涓変釜杈撳叆瀛楁錛屽茍閫氳繃鐪佺暐閫夊畾妯″紡錛岄夊畾鎵鏈夌殑璁板綍銆俛wk 紼嬪簭璇彞浠ュ垎鍙峰垎闅旓紝鑰屼笖鎴戜滑浼氫嬌鐢ㄤ簺鐣ュ井涓嶅悓鐨勬搷浣滀唬鐮侊紝浠ヤ慨鏀硅緭鍑哄瓧孌靛垎闅斿瓧絎?
[root@local~]#echo ‘one two three four'| awk ‘{print $1,$2,$3}’
one two three
[root@local~]#echo ‘one two three four'| awk ‘{OFS=”…”;print $1,$2,$3}’
one…two…three
[root@local~]#echo ‘one two three four'| awk ‘{OFS=”\n”;print $1,$2,$3}’
one
two
three
鏀瑰彉杈撳嚭瀛楁鍒嗛殧瀛楃鑰屾病鏈夋寚瀹氫換浣曞瓧孌碉紝涓嶄細鏀瑰彉$0:
[root@local~]#echo ‘one two three four'| awk ‘{OFS=”\n”;print $0}’
one two three four
涓嶈繃錛屽鏋滄垜浠洿鏀硅緭鍑哄瓧孌靛垎闅斿瓧絎︼紝騫舵寚瀹氳嚦灝戜竴涓瓧孌? 鍗充嬌鎴戜滑鏈彉鏇村叾鍊? 錛?
寮哄埗浠ユ柊鐨勫瓧孌靛垎闅斿瓧絎﹂噸鏂扮粍鍚堣褰曪紝鍒欑粨鏋滀負:
[root@local~]#echo ‘one two three four'| awk ‘{OFS=”\n”;$1=$1;print $0}’
one
two
three
four
12. 鍦╝wk 涓殑鍗曡紼嬪簭
1.UNIX 鍗曡瘝璁℃暟紼嬪簭wc;
[root@local~]#awk ‘{C+=length($0)+1;w+=NF} END {print NR, W, C}’
2. 鎾囧紑NUL 瀛楃闂錛宎wk 鍏跺疄鍙互杞繪澗鍙栦唬cat 錛屼笅闈㈣繖涓や釜渚嬪瓙浼氫駭鐢熺浉鍚岃緭鍑?
[root@local~]# cat*.xml
[root@local~]# awk 1*.xml
3. 瑕佸皢鍘熷鏁版嵁鍊煎強瀹冧滑鐨勫鏁版墦鍗頒負鍗曟爮鐨勬暟鎹枃浠訛紝鍙嬌鐢?
[root@local~]# awk ‘{print $1, log($1)}’file(s)
4. 鍦ㄤ互絀虹櫧鍒嗛殧瀛楁鐨勮〃鏍間腑錛屾姤鍛婄n 鏍忕殑鍜?
[root@local~]# awk -v COLUMN=n ‘{sum+=$COLUMN} END {print sum} ’file (s)
5. 寰皟涓婅堪鎶ュ憡錛屼駭鐢熷瓧孌祅 鐨勫鉤鍧囧?
[root@local~]# awk -v COLUMN=n ‘{sum+=$COLUMN} END {print sum/NR } ’file (s)
6. 閽堝鑺辮垂鏂囦歡( 鍏惰褰曞寘鍚弿榪頒笌閲戦浜庢渶鍚庝竴涓瓧孌? 錛屾墦鍗拌姳璐規繪暟銆傚彲浣跨敤鍐呭緩鍙橀噺NF 璁$畻鎬誨?
[root@local~]# awk’{sum+=$NF; print $0, sum}’files)
7. 榪欓噷鏄笁縐嶆煡鎵炬枃浠跺唴鏂囨湰鐨勬柟寮?
[root@local~]#egrep ‘pattern|pattern’ file (s)
[root@local~]#awk ‘/pattern|pattern/’file (s)
[root@local~]#awk ‘/pattern}pattern/ {print FILENAME ”: ”FNR ”: ”$0} ’file(s)
8. 濡傛灉浣犺闄愬埗浠呮煡鎵?00 涓150 琛岋紝鍙互閫氳繃涓や釜宸ュ叿紼嬪簭錛屽啀鎼厤綆¢亾錛屼笉榪囪繖涔堝仛浼氭紡鎺変綅緗俊鎭?
[root@local~]#sed -n -e 100,150p -s file(s) | egrep 'pattern'
浣跨敤GNU sed 瑕佹惌閰?s 閫夐」錛屾墠鑳戒負姣忎釜鏂囦歡閲嶆柊寮濮嬭緙栧彿銆傚彟澶栵紝浣犱篃鍙互閫氳繃awk 錛屼嬌鐢ㄦ瘮杈冭姳鍝ㄧ殑妯″紡鏉ュ仛:
[root@local~]#awk ‘(100<=FNR) && (FNR <= 150) && /pattern/\
{print FILENAME ”:” FNR ”:”$0}’file(s)
9. 瑕佸湪涓涓洓鏍忚〃鏍奸噷錛岃皟鎹㈢浜屼笌絎笁鏍忥紝鍋囪瀹冧滑鏄互鍒惰〃瀛楃鍒嗛殧錛岄偅涔堝彲浠?
浣跨敤涓嬮潰涓夌鏂瑰紡鐨勫叾涓竴縐?
[root@local~]#awk -F'\t’-v OFS='\t’{print $1, $3, $2, $4}’old > new
[root@local~]#awk ‘BEGIN{FS=OFS="\t"}{print $1, $3 錛?2 錛?4} ’old>new
[root@local~]#awk –F ‘\t’{print $1"\t" $3"\t" $2"\t" $4}’old>new
10. 瑕佸皢鍚勬爮鍒嗛殧瀛楃鐢卞埗琛ㄥ瓧絎? 鍦ㄦ浠?#183;鏄劇ず) 杞崲鎴?amp; 錛屽彲鍦ㄤ互涓嬩袱縐嶆柟寮忔嫨涓:
[root@local~]#sed -e 's/ ·/&/g' file(s)
[root@local~]#awk ‘{BEGIN{FS="\t";OFS= “& ”}{$1=$1; print} ’file(s)
11. 涓嬮潰榪欎袱涓閬擄紝閮戒負鍒犻櫎宸叉帓搴忔祦閲岀殑閲嶅琛?
[root@local~]#sort file(s)|uniq
[root@local~]# sort file(s)|awk ‘Last!=$0 { print }{Last=$0}’
12. 灝嗗洖杞﹀瓧絎? 鎹㈣瀛楃鐨勮緇堢粨錛屼竴鑷磋漿鎹負浠ユ崲琛屽瓧絎︿綔涓鴻緇堢粨錛屽彲鍦ㄤ笅鍒楁柟
寮忎腑閫夋嫨涓縐?
[root@local~]#sed –e ‘s/\r$//’ file(s)
[root@local~]#sed –e ‘s/^M$//’ file(s)
[root@local~]# mawk ‘BEGIN {RS=“\r\n"} {print}’file(s)
13. 瑕佸皢鍗曠┖鏍肩殑鏂囨湰琛岋紝杞崲涓哄弻絀烘牸鐨勮錛屽彲鍦ㄤ笅鍒楁柟寮忛夋嫨涓縐?
[root@local~]#sed –e ‘/s/$/\n/ ’file(s)
[root@local~]#awk ‘BEGTN{ ORS = "\n\n"){print}’file(s)
[root@local~]#awk ‘BEGIN{ ORS="\n\n" }1 ’ file(s)
[root@local~]#awk {print $0 “\n”} ’ file(s)
[root@local~]#awk ‘{print;print ” ”} ’ file(s)
13. 璇彞
13.1. 鏉′歡璇彞
if(expressionl)
stateme 鍒t1
else if(expression2)
statement2
else if(expression3)
statement3
else if(expressionk)
statementk
else
statementk+l
13.2. 閲嶅鎵ц
awk 鎻愪緵浜?4 縐嶉噸澶嶆墽琛岃鍙?( 寰幆 ):
1. 寰幆鍦ㄨ搗濮嬪浣跨敤緇撴潫嫻嬭瘯 :
while(expression)
statement
2. 寰幆鍦ㄧ粨灝懼浣跨敤緇撴潫嫻嬭瘯 :
do
statement
while (expression)
3. 寰幆鎵ц鍙鏁扮殑嬈℃暟 :
for(expr1;expr2; expr3)
statement
4. 寰幆澶勭悊鍏寵仈鏁扮粍閲岀殑鍏冪礌 :
for(key in array)
statement
渚嬪錛?
for 錛坣ame in telephone)
print name“\t" telephone[name]
13.3 鏁扮粍鎴愬憳嫻嬭瘯
鎴愬憳嫻嬭瘯key in array 鏄竴涓〃杈懼紡: 濡傛灉key 涓篴rray 鐨勪竴涓儲寮曞厓绱狅紝鍒欒綆椾負1( 鐪? 銆傚鏋渒ey 涓嶆槸array 鐨勪竴涓儲寮曞厓绱狅紝鍒?(key in array) 涓? 銆?
瀵逛簬鍏鋒湁澶氫笅鏍?subscript) 鐨勬暟緇勶紝鍦ㄦ祴璇曟椂錛岃浣跨敤鍦嗘嫭鍙鳳紝騫朵互閫楃偣鍒嗛殧涓嬫爣鍒楄〃:(i 錛宩 錛?#8230;錛宯)in array
鎴愬憳嫻嬭瘯涓嶅彲鑳藉緩绔嬫暟緇勫厓绱狅紝鐒惰屽紩鐢ㄥ厓绱犳椂錛屽鏋滃厓绱犱笉瀛樺湪錛屼究浼氬緩绔嬪畠銆傚洜姝や綘搴旇榪欎箞鍐?
if("Sally" in telephone)
print "Sally is in the directory"
鑰岄潪:
if (telephone["Sally"]!= ””)
print "Sally is in the directory"
鍥犱負絎簩縐嶅艦寮忎細鍦ㄥス(Sally) 涓嶅瓨鍦ㄦ椂錛屽皢鍏跺姞鍏ュ埌鐩綍閲岋紝騫舵嫢鏈変竴涓┖鐢佃瘽鍙風爜銆?
閲嶇偣鏄? 浣犲繀欏昏兘澶熷尯鍒嗗鎵劇儲寮?index) 涓庡鎵劇壒瀹氬?value) 鐨勫樊寮傘傜儲寮曟垚鍛樻祴璇曢渶瑕佸浐瀹氱殑鏃墮棿錛岃屽肩殑鏌ユ壘鏃墮棿鏄笌鏁扮粍閲屽厓绱犵殑涓暟鎴愭姣旓紝榪欑偣鎴戜滑鍦ㄥ厛鍓嶅凡閫氳繃break 璇彞鍐呯殑for 寰幆瑙i噴榪囦簡銆傚鏋滀綘闇瑕佹椂甯哥敤鍒拌繖涓ょ榪愮畻錛岄偅涔堟瀯寤哄弽绱㈠紩鏁扮粍浼氭瘮杈冨疄鐢?
for (name in telephone)
name_by_telephone[telephone[name]]=name
鎺ヤ笅鏉ワ紝浣犲氨鍙互浣跨敤name_by_telephone ["555-0136"] 鍦ㄤ竴瀹氭椂闂村唴鎵懼埌”Carol" 銆傚綋鐒訛紝榪欓噷鍋囧畾鎵鏈夌殑鍊兼槸鍞竴鐨? 濡傛灉榪欎袱浜哄叡浜悓涓涓數璇濓紝鍒檔ame_by_telephone 鏁扮粍鍙細璁板綍鏈鍚庝竴涓悕縐般傚彧瑕佺◢鍋氫慨鏀瑰氨鑳借В鍐寵繖涓棶棰?
for (name in telephone)
{
if (telephone[name] in name_by_telephone)
name_by_telephone[telephone[name]]=\
name_by_telephone [telephone[name]) “\t”name
e1se
name_by_telephone[telephone[name]]=name
鐜板湪錛宯ame_by_telephone 鍗沖寘鍚簡浠ュ埗琛ㄥ瓧絎﹀垎闅旂殑鍏鋒湁鐩稿悓鐢佃瘽鍙風爜鐨勪漢鍚嶅垪琛ㄣ?
14. 鐢ㄦ埛鎺у埗杈撳叆
awk 涔熷彲浠ラ氳繃鐨刧etline 璇彞鍋氳繖浠朵簨銆俫etline 浼氳繑鍥炰竴涓鹼紝褰撹緭鍏ヨ鎴愬姛璇誨彇鏃訛紝瀹冪殑榪斿洖鍊間負++I 錛岃岃繑鍥炲間負0 鏃訛紝鍒欒〃紺哄湪鏂囦歡緇撳熬錛岃?1 鍒欒〃紺洪敊璇傚畠鐨勭敤娉曞緢澶氾紝瑙佽〃銆?
璇硶 璇存槑
getline 浠庡綋鍓嶈緭鍏ユ枃浠朵腑錛岃鍙栦笅涓鏉¤褰曪紝瀛樺叆$0 錛屽茍鏇存柊NF, NR 涓嶧NR
getline var 浠庡綋鍓嶈緭鍏ユ枃浠朵腑錛岃鍙栦笅涓鏉¤褰曪紝瀛樺叆var 錛屽茍鏇存柊NR 涓嶧NR
getline<file 浠巉ile 鏂囦歡涓紝璇誨彇涓嬩竴鏉¤褰曪紝瀛樺叆$0 錛屽茍鏇存柊NF, NR 涓嶧NR
getline var<file 浠巉ile 鏂囦歡涓紝璇誨彇涓嬩竴鏉¤褰曪紝瀛樺叆var 錛屽茍鏇存柊NF, NR 涓嶧NR
cmd|getline 浠庡閮ㄥ懡浠md 璇誨彇涓嬩竴鏉¤褰曪紝瀛樺叆$0 錛屽茍鏇存柊NF
cmd|getline var 浠庡閮ㄥ懡浠md 璇誨彇涓嬩竴鏉¤褰曪紝瀛樺叆var
鍛戒護綆¢亾鍦╝wk 閲屽彲浠ュ彂鎸ュ己澶х殑鍔熻兘銆傜閬撳彲浠ュ湪瀛楃瀛楃涓蹭腑鏍囨槑錛屼篃鍙互鍖呭惈浠?
鎰忕殑Shell 鍛戒護銆傝繖閲屾槸涓巊etline 鎼厤浣跨敤錛屽涓?
"date" I getline now
close("date")
print "The current time is".now
鎺ヤ笅鏉ヨ鏄庣殑鏄? 濡備綍鍦ㄥ驚鐜噷浣跨敤鍛戒護綆¢亾:
command="head -n 15 /etc/hosts"
while((command I getline s)>0)
print s
close(command)
15. 鎵ц澶栭儴紼嬪簭
榪欓噷鏄В鍐崇數璇濆悕褰曟帓搴忛棶棰樿緝鐭殑紼嬪簭鏂規錛屼嬌鐢ㄤ復鏃舵ф枃浠朵笌systemty 錛岃岄潪awk 綆¢亾:
tmpfile= “/tmp/telephone.tmp^
for (name in telephone>
print name "\t" telephone[name]>tmpfile
close(tmpfilej
system("sort < tmpfile “)
涓存椂鎬ф枃浠跺繀欏誨湪璋冪敤system() 涔嬪墠鍏抽棴錛屼互紜繚浠諱綍緙撳啿鍖鴻緭鍑洪兘姝g‘鍦拌褰曞湪鏂囦歡鍐呫?
瀵逛簬琚玸ystem() 鎵ц鐨勫懡浠ゅ茍涓嶉渶瑕佽皟鐢╟lose() 錛屽洜涓篶lose() 浠呴拡瀵逛互I/O 閲嶅畾鍚戣繍綆楃鎵鎵撳紑鐨勬枃浠舵垨綆¢亾錛岃繕鏈塯etline, print 鎴杙rintf 銆?
浼犻掔粰system[f 鐨勫懡浠ゅ彲鍖呭惈鏁拌
system("cat <<EOFILE\nuno\ndos\ntres\nEOFILE"
瀹冧駭鐢熺殑杈撳嚭鍜屼粠宓屽叆鏂囦歡澶嶅埗鍒版爣鍑嗚緭鍑轟竴鏍?
Un0
das
tres
16. 鐢ㄦ埛鑷畾涔夊嚱鏁?
鍑芥暟瀹氫箟濡備笅:
function name(argl, }rg2, …錛宎rgn
{
statements
}
鎸囧畾鐨勫弬鏁板湪鍑芥暟浣撲腑鐢ㄦ潵褰撲綔灞閮ㄥ彉閲忥紝瀹冧滑浼氶殣钘忎換浣曠浉鍚屽悕縐扮殑鍏ㄥ眬鎬у彉閲忋傚嚱鏁頒篃鍙敤浜庣▼搴忓畠澶勶紝璋冪敤鐨勫艦寮忎負:
name(exprl, expr2, …錛宔xpn) 蹇界暐浠諱綍鐨勮繑鍥炲?
result=name(exprl, expr2, …錛宔xprn) 灝嗚繑鍥炲煎瓨鍌ㄥ埌result 涓?
鍦ㄦ瘡涓皟鐢ㄧ偣涓婄殑琛ㄨ揪寮忥紝閮芥彁渚涘垵濮嬪肩粰鍑芥暟鍙傛暟鍨嬪彉閲忋備互鍦嗘嫭鍙鋒璧鋒潵鐨勫弬鏁幫紝蹇呴』绱ф帴浜庡嚱鏁板悕縐頒箣鍚庯紝涓棿娌℃湁浠諱綍絀虹櫧銆?
瀵規爣閲忓弬鏁版墍鍋氱殑鍙樺姩錛岃皟鐢ㄨ呮棤浠庡緱鐭ワ紝涓嶈繃瀵規暟緇勭殑鍙樺姩灝卞彲鐪嬭浜嗐傛崲鍙ヨ瘽璇達紝鏍囬噺涓轟紶鍊?by vaule ) 錛岃屾暟緇勫垯涓轟紶寮曠敤(by reference): 榪欏C 璇█涔熸槸榪欐牱銆?
鍑芥暟浣撻噷鐨剅eturn expression 璇彞浼氱粓姝富浣撶殑鎵ц錛屽茍灝唀xpression 鐨勫間笌鎺у埗鏉冧紶緇欒皟鐢ㄧ偣銆傚鏋渆xpression 鐪佺暐錛屽垯榪斿洖鍊肩敱瀹炵幇鏈熷畾涔夈傛垜浠祴璇曡繃鐨勬墍鏈夌郴緇燂紝榪斿洖鐨勪笉鏄暟瀛楅浂灝辨槸絀哄瓧絎︿覆銆?
17. 瀛楃涓插嚱鏁?
17.1. 瀛愬瓧絎︿覆鎻愬彇
鎻愬彇瀛愬瓧絎︿覆鐨勫嚱鏁?substr(string, start, 1en) 錛屼細榪斿洖涓浠界敱string 鐨剆tart 瀛楃寮濮嬶紝鍏眑en 涓瓧絎﹂暱搴︾殑瀛愬瓧絎︿覆鍓湰銆傚瓧絎︾殑浣嶇疆錛屼粠1 寮濮嬬紪鍙?substr("abcde", 2, 3) 灝嗚繑鍥炪俠cd" 銆?len 鍙傛暟鍙渷鐣ワ紝鐪佺暐鏃訛紝鍒欓粯璁や負length(string)-start+1 錛岄夊嚭瀛楃涓茬殑鍓╀綑閮ㄥ垎銆?
17.2. 瀛楃涓插ぇ灝忓啓杞崲
tolower(string) 浼氳繑鍥炲皢鎵鏈夊瓧姣嶆敼涓哄悓涔夌殑灝忓啓鐨剆tring 鍓湰錛岃宼oupper(string) 鍒欒繑鍥炶鏀逛負澶у啓瀛楁瘝鐨剆tring 鍓湰銆傛墍浠olower("aBcDeF123") 榪斿洖”abcdef123",toupper("aBcDeF123") 榪斿洖"ABCDEF123" 銆?
17.3. 瀛楃涓插ぇ灝忓啓杞崲
index(string, find) 鏌ユ壘string 閲屾槸鍚︽湁瀛楃涓瞗ind 錛岀劧鍚庤繑鍥瀞tring 閲宖ind 瀛楃涓茬殑璧峰浣嶇疆錛屽鏋滃湪string 閲屾壘涓嶅埌find 錛屽垯榪斿洖0 銆備緥濡俰ndex("abcdef","de") 浼氳繑鍥? 銆?
17.4. 瀛楃涓插尮閰?
match 錛坰tring, regexp) 灝唖tring 涓庢鍒欒〃杈懼紡regexp 鍖歸厤錛屽鏋滃尮閰嶏紝鍒欒繑鍥?
鍖歸厤string 鐨勭儲寮曪紝涓嶅尮閰嶏紝鍒欒繑鍥? 銆傝繖縐嶆柟寮忔彁渚涗簡姣旇〃杈懼紡(string~regexp) 榪樺鐨勪俊鎭紝鍚庤呭彧鑳藉緱鍒拌綆楀? 鎴? 銆傚彟澶杕atch ( ) 涔熷叿鏈変竴涓湁鐢ㄧ殑鍓綔鐢? 瀹冧細灝嗗叏灞鍙橀噺RSTART 璁句負鍦╯tring 涓寮濮嬪尮閰嶇殑绱㈠紩鍊鹼紝鑰屽皢RLENGTH 璁句負瑕佸尮閰嶇殑闀垮害銆傝屽尮閰嶅瓙瀛楃涓插垯浠ubstr(string, RSTART, RLENGTH) 琛ㄧず銆?
17.5. 瀛楃涓叉浛鎹?
awk 鍦ㄥ瓧絎︿覆鏇挎崲鍔熻兘涓婏紝鎻愪緵涓や釜鍑芥暟:sub(regexp, replacement, target) 涓巊sub(regexp, replacement, target), sub() 灝唗arget 涓庢鍒欒〃杈懼紡regexp 榪涜鍖歸厤錛屽皢鏈宸﹁竟鏈闀跨殑鍖歸厤閮ㄥ垎鏇挎崲涓哄瓧絎︿覆replacement 銆俫sub() 鐨勮繍琛屽垯鏈夌偣綾諱技錛屼笉榪囧畠浼氭浛鎹㈡墍鏈夊尮閰嶇殑瀛楃涓? 鍓嶇疆g 琛ㄧずglobal 鍏ㄥ眬涔嬫剰) 銆?
17.6. 瀛楃涓叉浛鎹?
awk 閽堝褰撳墠杈撲漢璁板綍$0 鑷姩鎻愪緵浜嗘柟渚跨殑鍒嗗壊涓哄瓧1, $}, …銆?NF 錛屼篃鍙互鍑芥暟鏉ュ仛:split(string, array, regexp) 灝唖tring 鍒囧壊涓虹墖孌碉紝騫跺瓨鍌ㄥ埌array 閲岀殑榪炵畫鍏冪礌銆傚湪鏁扮粍閲岋紝鐗囨鏀劇疆鍦ㄥ尮閰嶆鍒欒〃杈懼紡regexp 鐨勫瓙瀛楃涓蹭箣闂淬傚鏋渞egexp 鐪佺暐錛屽垯浣跨敤鍐呭緩瀛楁鍒嗛殧瀛楃FS 鐨勫綋鍓嶉粯璁ゅ箋傚嚱鏁頒細榪斿洖array 閲岀殑鍏冪礌鏁伴噺銆?
17.7. 瀛楃涓查噸寤?
join() 鍙‘淇濆弬鏁版暟緇勪笉浼氳寮曠敤鍒幫紝闄ら潪绱㈠紩鏄湪鑼冨洿涔嬪唴銆傚惁鍒欙紝涓涓叿鏈夋暟緇勯暱搴︿負0 鐨勮皟鐢ㄥ彲鑳戒細寤虹珛arrayfl3 錛岃屼慨鏀逛簡璋冪敤鑰呯殑鏁扮粍銆傛彃浜虹殑瀛楁鍒嗛殧瀛楃涓烘櫘閫氬瓧絎︿覆錛岃岄潪姝e垯琛ㄨ揪寮忥紝鎵浠ラ拡瀵逛紶閫掔粰split() 鐨勪竴鑸鍒欒〃杈懼紡錛宩oin() 涓嶄細閲嶅緩綺劇‘鐨勫師濮嬪瓧絎︿覆銆?
17.8. 瀛楃涓叉牸寮忓寲
鏈鍚庝竴涓笌瀛楃涓茬浉鍏崇殑鍑芥暟鏄湪鐢ㄦ埛鎺у埗涓嬫牸寮忓寲鏁板瓧涓庡瓧絎︿覆:sprintf (format,expression1, expression2, …) 錛屽畠浼氳繑鍥炲凡鏍煎紡鍖栫殑瀛楃涓蹭綔涓哄叾鍑芥暟鍊箋俻rintf() 鐨勮繍琛屾柟寮忎篃鏄繖鏍鳳紝鍙笉榪囧畠浼氬湪鏍囧噯杈撳嚭鎴栭噸瀹氬悜鐨勬枃浠朵笂鏄劇ず鏍煎紡鍖栧悗鐨勫瓧絎︿覆錛岃屼笉鏄繑鍥炲叾鍑芥暟鍊箋傝緝鏂扮殑紼嬪簭璇█浠ユ洿寮哄ぇ鐨勬牸寮忓寲鍑芥暟鏉ュ彇浠f牸寮忔帶鍒跺瓧絎︿覆錛屼絾鐩稿鑰岃█璁╀唬鐮佸彉寰楀緢鍐楅暱銆傛寜鐓т紶緇熺殑鏂囨湰澶勭悊搴旂敤鏉ヨ錛宻printf 涓巔rintf
18. 鏁板煎嚱鏁?
鍑芥暟 璇存槑
atan2(y, x) y 榪斿洖y/x 鐨勫弽姝e垏錛屽間粙浜?pai 涓?pai 涔嬮棿銆?
cos(x) 榪斿洖x 鐨勪綑寮﹀? 浠ュ姬搴?radians) 璁$畻) 錛岃鍊間粙浜?1 涓?1 涔嬮棿
exp(x) 榪斿洖x 鐨勬寚鏁幫紝ex,
int(x) 榪斿洖x 鐨勬暣鏁伴儴鍒嗭紝鎴幓鍓嶇疆鐨?
log(x) 榪斿洖x 鐨勮嚜鐒跺鏁般?
rand() 榪斿洖騫沖潎鍒嗗竷鐨勮櫄鎷熼殢鏈簉,O<=r<l
sin(x) 榪斿洖x 鐨勬寮﹀? 浠ュ姬搴?radians] 璁$畻) 錛岃鍊間粙浜?1 涓?1 涔嬮棿
sqrt(x) 榪斿洖x 鐨勫鉤鏂?
srand(x) 璁劇疆铏氭嫙闅忔満浜х敓鍣ㄧ殑縐嶅瓙涓簒 錛屽茍榪斿洖姝g‘鐨勭瀛愩傚鏋滅渷鐣 錛屽垯浣跨敤褰撳墠鏃墮棿( 浠ョ璁? 銆傚鏋溿俽and ( ) 鏈璋冪敤錛屽垯awk 鍦ㄦ瘡嬈℃墽琛屾椂浼氫粠鐩稿悓鐨勯粯璁ょ瀛愬紑濮?mawk 鍒欎笉浼氥?
鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/wzhwho/archive/2010/04/21/5513791.aspx
awk 'BEGIN {system("echo \"Input your name:\\c\""); getline d;print "\nYour name is",d,"\b!\n"}'
鐢紙""錛夊拰\" \" \\杞箟銆?/p>
system - execute a shell command 錛堬級閲岄潰鎺ュ叆鍛戒護
awk紼嬪簭涓垜浠彲浠ヤ嬌鐢╯ystem() 鍑芥暟鍘昏皟鐢╯hell鍛戒護
濡傦細awk 'BEGIN{system("echo abc")}' file
echo abc 灝變細鍋氫負“鍛戒護琛?#8221;錛岀敱shell鏉ユ墽琛岋紝鎵浠ユ垜浠細寰楀埌浠ヤ笅緇撴灉錛?br>
root@ubuntu:~# awk 'BEGIN{system("echo abc")}'
abc
root@ubuntu:~#
root@ubuntu:~# awk 'BEGIN{v1="echo";v2="abc";system(v1" "v2)}'
abc
root@ubuntu:~#
root@ubuntu:~# awk 'BEGIN{v1="echo";v2="abc";system(v1 v2)}'
/bin/sh: echoabc: command not found
root@ubuntu:~#
root@ubuntu:~# awk 'BEGIN{v1=echo;v2=abc;system(v1" "v2)}'
root@ubuntu:~#
浠庝笂闈㈢殑渚嬪瓙錛屾垜浠畝鍗曠殑鍒嗘瀽涓涓媋wk鏄庢牱璋冪敤system鐨勶細
濡傛灉system錛堬級鎷彿閲岄潰鐨勫弬鏁版病鏈夊姞涓婂弻寮曞彿鐨勮瘽錛宎wk璁や負瀹冩槸涓涓彉閲忥紝瀹冧細浠巃wk鐨勫彉閲忛噷闈㈡妸瀹冧滑鍏堢疆鎹負甯擱噺錛岀劧鍚庡啀鍥炰紶緇檚hell
濡傛灉system錛堬級鎷彿閲岄潰鐨勫弬鏁版湁鍔犱笂鍙屽紩鍙風殑璇濓紝閭d箞awk灝辯洿鎺ユ妸寮曞彿閲岄潰鐨勫唴瀹瑰洖浼犵粰shell錛屼綔涓簊hell鐨?#8220;鍛戒護琛?#8221;
浜屻備嬌鐢╬rint cmd | “/bin/bash”
root@ubuntu:~# awk 'BEGIN{print "echo","abc"| "/bin/bash"}'
abc
root@ubuntu:~#
root@ubuntu:~# awk 'BEGIN{print "echo","abc",";","echo","123"| "/bin/bash"}'
abc
123
root@ubuntu:~#
涓夈傛葷粨
鏃犺浣跨敤system錛堬級榪樻槸print cmd | “/bin/bash”
awk閮芥槸鏂板紑涓涓猻hell錛屽湪鐩稿簲鐨刢mdline鍙傛暟閫佸洖緇檚hell錛屾墍浠ヨ娉ㄦ剰褰撳墠shell鍙橀噺涓庢柊寮shell鍙橀噺闂
1.1
root@ubuntu:~# abc=12345567890
root@ubuntu:~# awk 'BEGIN{system("echo $abc")}'
root@ubuntu:~#
1.2
root@ubuntu:~# export abc=12345567890
root@ubuntu:~# awk 'BEGIN{system("echo $abc")}'
12345567890
root@ubuntu:~#
2.1
root@ubuntu:~# abc=1234567890
root@ubuntu:~# awk 'BEGIN{print "echo","$abc"| "/bin/bash"}'
root@ubuntu:~#
2.2
root@ubuntu:~# export abc=1234567890
root@ubuntu:~# awk 'BEGIN{print "echo","$abc"| "/bin/bash"}'
1234567890
root@ubuntu:~#
浠ヤ笂渚嬪瓙錛屾病鏈塭xport鐨勮瘽錛岄偅浜涘彉閲忛兘鏄彧瀛樺湪浜庡綋鍓峴hell鍙橀噺涓紝鎵浠ラ兘鏄痚cho涓嶅嚭鏉ョ殑 錛?br>鑰屼嬌鐢ㄤ簡 export鐨勯兘鏄幆澧冨彉閲忥紝鎵浠wk璋冪敤鏂扮殑shell鏃跺欙紝鍙互echo鍑烘潵
split鍛戒護
璇硶:komy@komy-vmware:~$ split [-bl] 杈撳叆鏂囦歡 杈撳嚭鏂囦歡
鍙傛暟璇存槑
-b :浠ユ枃浠跺ぇ灝忔潵鍒?/font>
-l錛氫互琛屾暟鏉ュ垎
渚嬪split -l 100 test.txt out
灝辨槸鎶妕est.txt姣?00琛岃緭鍑轟竴涓枃浠秓utaa,outab,outcd浠ユ綾繪帹銆傘傘傚疄鐜頒簡鏂囨湰鏂囦歡鐨勫垎鍓層?/font>
split -b 100k test.txt out
灝辨槸鎶妕est.txt姣?00KB杈撳嚭涓涓枃浠秓utaa,outab,outcd浠ユ綾繪帹銆?/font>
榪欎袱涓懡浠ゅ浜庢墜鏈虹湅灝忚鏈夐檺鍒剁殑鎯呭喌涓嬪緢鍙楃敤銆傘傘?/font>
涓嶄粎浠呭姝at 鍛戒護鍙皢榪欎簺鍒嗗壊鍚庣殑鏂囦歡鍚堝茍涓轟竴涓枃浠訛紝騫墮噸瀹氬悜鍒?#8220;largefile”鏂囦歡涓紙largefile涓鴻嚜瀹氱殑鏂囦歡鍚嶏級銆?
komy@komy-vmware:~$ cat out* > largeflie
| shell鏂囨湰澶勭悊鏂歸潰錛屼富瑕佹槸鏈塻ed錛宎wk榪欎袱鎶婂垁銆?br> 鍏夌粰浣犱釜shell浣犺繘琛屾枃鏈鐞嗘槸鍋氫笉鍒扮殑錛屽綋鐒剁畝鍗曠殑榪樺彲浠ャ?br> perl閲屾湁姝e垯琛ㄨ揪寮忓紩鎿庯紝鑳介拡瀵規枃鏈繘琛屾媶鍒嗘浛鎹㈢瓑澶嶆潅鎿嶄綔錛屽叧閿槸錛宲erl涓嶇敤fork鍑烘柊鐨勮繘紼嬫潵澶勭悊榪欎簺浜嬫儏錛岃宻hell闇瑕佷嬌鐢ㄧ閬撶瓑閫氳繃榪欎簺sed錛宎wk鐨勮繘紼嬫潵澶勭悊錛岃嚦灝戝氨澶氬嚭閮ㄥ垎榪涚▼鐨勫紑閿銆?br> 鑰屼笖錛岀閬撹繖涓笢瑗匡紝鍘熸湰涓涓伐鍏蜂竴嬈¤兘瀹屾垚鐨勪換鍔★紝鍦ㄩ渶瑕佺粡榪噑ed錛屽拰awk絳夊嬈$閬撱傛晥鐜囧彲鎯寵岀煡銆?br> 鍏跺疄浣犺繖涓棶棰橀棶鐨勬湁鐐瑰急鏅猴紝SHELL鏄粈涔堬紵 SHELL鍙槸涓涓帴鍙o紝澶ч儴鍒嗙殑鍔熻兘鍏ㄩ潬澶栭儴紼嬪簭鏉ュ畬鎴愩?br>鑰孭erl鏄竴縐嶈璦錛屽熀鏈笂浠涔堜簨鎯呴兘鑳藉仛銆?/td> |
-k [ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]
The sort key includes all characters beginning with the field specified by the FStart variable and the column specified by
the CStart variable and ending with the field specified by the FEnd variable and the column specified by the CEnd variable.
If Fend is not specified, the last character of the line is assumed. If CEnd is not specified the last character in the
FEnd field is assumed. Any field or column number in the KeyDefinition variable may be omitted. The default values are:
FStart
Beginning of the line
CStart
First column in the field
FEnd
End of the line
CEnd
Last column of the field
If there is any spaces between the fields, sort considers them as separate fields.
The value of the Modifier variable can be one or more of the letters b, d, f, i, n, or r. The modifiers apply only to the
field definition they are attached to and have the same effect as the flag of the same letter. The modifier letter b
applies only to the end of the field definition to which it is attached. For example:
-k 3.2b,3r
specifies a sort key beginning in the second nonblank column of the third field and extending to the end of the third
field, with the sort on this key to be done in reverse collation order. If the FStart variable and the CStart variable fall
beyond the end of the line or after the FEnd variable and the CEnd variable, then the sort key is ignored.
A sort key can also be specified in the following manner:
[+[FSkip1] [.CSkip1] [Modifier] ] [-[FSkip2] [.CSkip2] [Modifier]]
The +FSkip1 variable specifies the number of fields skipped to reach the first field of the sort key and the +CSkip
variable specifies the number of columns skipped within that field to reach the first character in the sort key. The -FSkip
variable specifies the number of fields skipped to reach the first character after the sort key, and the -CSkip variable
specifies the number of columns to skip within that field. Any of the field and column skip counts may be omitted. The
defaults are:
FSkip1
Beginning of the line
CSkip1
Zero
FSkip2
End of the line
CSkip2
Zero
The modifiers specified by the Modifier variable are the same as in the -k flag key sort definition.
The field and column numbers specified by +FSkip1.CSkip1 variables are generally one less than the field and column number
of the sort key itself because these variables specify how many fields and columns to skip before reaching the sort key.
For example:
+2.1b -3r
specifies a sort key beginning in the second nonblank column of the third field and extending to the end of the third
field, with the sort on this key to be done in reverse collation order. The statement +2.1b specifies that two fields are
skipped and then the leading blanks and one more column are skipped. If the +FSkip1.CSkip1 variables fall beyond the end of
the line or after the -FSkip2.CSkip2 variables, then the sort key is ignored.
Note: The maximum number of fields on a line is 10.
涓轟簡闃叉鏌愪簺緗戠珯鐨勬伓鎬ц漿杞斤紝鐗瑰湪姣忕瘒鏂囩珷鍓嶅姞鍏ユ淇℃伅錛岃繕鏈涜鑰呬綋璋呫?/strong>
===
[姝f枃寮濮媇
鏈夋椂鍊欏涔犺剼鏈紝浣犱細鍙戠幇sort鍛戒護鍚庨潰璺熶簡涓鍫嗙被浼?k1,2錛屾垨鑰?k1.2 -k3.4鐨勪笢涓滐紝鏈変簺鍖し鎵鎬濄備粖澶╋紝鎴戜滑灝辨潵鎼炲畾瀹冣?k閫夐」錛?/p>
1 鍑嗗绱犳潗
$ cat facebook.txt
google 110 5000
baidu 100 5000
guge 50 3000
sohu 100 4500
絎竴涓煙鏄叕鍙稿悕縐幫紝絎簩涓煙鏄叕鍙鎬漢鏁幫紝絎笁涓煙鏄憳宸ュ鉤鍧囧伐璧勩傦紙闄や簡鍏徃鍚嶇О錛屽叾浠栫殑鍒俊錛岄兘鐬庡啓鐨刕_^錛?/p>
2 鎴戞兂璁╄繖涓枃浠舵寜鍏徃鐨勫瓧姣嶉『搴忔帓搴忥紝涔熷氨鏄寜絎竴涓煙榪涜鎺掑簭錛氾紙榪欎釜facebook.txt鏂囦歡鏈変笁涓煙錛?/strong>
$ sort -t ‘ ‘ -k 1 facebook.txt
baidu 100 5000
google 110 5000
guge 50 3000
sohu 100 4500
鐪嬪埌浜嗗惂錛屽氨鐩存帴鐢?k 1璁懼畾灝卞彲浠ヤ簡銆傦紙鍏跺疄姝ゅ騫朵笉涓ユ牸錛岀◢鍚庝綘灝變細鐭ラ亾錛?/p>
3 鎴戞兂璁ゝacebook.txt鎸夌収鍏徃浜烘暟鎺掑簭
$ sort -n -t ‘ ‘ -k 2 facebook.txt
guge 50 3000
baidu 100 5000
sohu 100 4500
google 110 5000
涓嶇敤瑙i噴錛屾垜鐩鎬俊浣犺兘鎳傘?/p>
浣嗘槸錛屾澶勫嚭鐜頒簡闂錛岄偅灝辨槸baidu鍜宻ohu鐨勫叕鍙鎬漢鏁扮浉鍚岋紝閮芥槸100浜猴紝榪欎釜鏃跺欐庝箞鍔炲憿錛熸寜鐓ч粯璁よ鐭╋紝鏄粠絎竴涓煙寮濮嬭繘琛屽崌搴忔帓搴忥紝鍥犳baidu鎺掑湪浜唖ohu鍓嶉潰銆?/p>
4 鎴戞兂璁ゝacebook.txt鎸夌収鍏徃浜烘暟鎺掑簭 錛屼漢鏁扮浉鍚岀殑鎸夌収鍛樺伐騫沖潎宸ヨ祫鍗囧簭鎺掑簭錛?/strong>
$ sort -n -t ‘ ‘ -k 2 -k 3 facebook.txt
guge 50 3000
sohu 100 4500
baidu 100 5000
google 110 5000
鐪嬶紝鎴戜滑鍔犱簡涓涓?k2 -k3灝辮В鍐充簡闂銆傚婊達紝sort鏀寔榪欑璁懼畾錛屽氨鏄璁懼畾鍩熸帓搴忕殑浼樺厛綰э紝鍏堜互絎?涓煙榪涜鎺掑簭錛屽鏋滅浉鍚岋紝鍐嶄互絎?涓煙榪涜鎺掑簭銆傦紙濡傛灉浣犳効鎰忥紝鍙互涓鐩磋繖涔堝啓涓嬪幓錛岃瀹氬緢澶氫釜鎺掑簭浼樺厛綰э級
5 鎴戞兂璁ゝacebook.txt鎸夌収鍛樺伐宸ヨ祫闄嶅簭鎺掑簭錛屽鏋滃憳宸ヤ漢鏁扮浉鍚岀殑錛屽垯鎸夌収鍏徃浜烘暟鍗囧簭鎺掑簭錛氾紙榪欎釜鏈夌偣闅懼害鍠斤級
$ sort -n -t ‘ ‘ -k 3r -k 2 facebook.txt
baidu 100 5000
google 110 5000
sohu 100 4500
guge 50 3000
姝ゅ鏈変嬌鐢ㄤ簡涓浜涘皬鎶宸э紝浣犱粩緇嗙湅鐪嬶紝鍦?k 3鍚庨潰鍋峰伔鍔犱笂浜嗕竴涓皬鍐欏瓧姣峳銆備綘鎯蟲兂錛屽啀緇撳悎鎴戜滑涓婁竴綃囨枃绔?/font>錛岃兘寰楀埌絳旀涔堬紵鎻檽錛歳鍜?r閫夐」鐨勪綔鐢ㄦ槸涓鏍風殑錛屽氨鏄〃紺洪嗗簭銆傚洜涓簊ort榛樿鏄寜鐓у崌搴忔帓搴忕殑錛屾墍浠ユ澶勯渶瑕佸姞涓妑琛ㄧず絎笁涓煙錛堝憳宸ュ鉤鍧囧伐璧勶級鏄寜鐓ч檷搴忔帓搴忋傛澶勪綘榪樺彲浠ュ姞涓妌錛屽氨琛ㄧず瀵硅繖涓煙榪涜鎺掑簭鏃訛紝瑕佹寜鐓ф暟鍊煎ぇ灝忚繘琛屾帓搴忥紝涓句釜渚嬪瓙鍚э細
$ sort -t ‘ ‘ -k 3nr -k 2n facebook.txt
baidu 100 5000
google 110 5000
sohu 100 4500
guge 50 3000
鐪嬶紝鎴戜滑鍘繪帀浜嗘渶鍓嶉潰鐨?n閫夐」錛岃屾槸灝嗗畠鍔犲叆鍒頒簡姣忎竴涓?k閫夐」涓簡銆?/p>
6 -k閫夐」鐨勫叿浣撹娉曟牸寮?/strong>
瑕佺戶緇線涓嬫繁鍏ョ殑璇濓紝灝變笉寰椾笉鏉ョ偣鐞嗚鐭ヨ瘑銆備綘闇瑕佷簡瑙?k閫夐」鐨勮娉曟牸寮忥紝濡備笅錛?/p>
[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]
榪欎釜璇硶鏍煎紡鍙互琚叾涓殑閫楀彿錛?#8220;錛?#8221;錛夊垎涓轟袱澶ч儴鍒嗭紝Start閮ㄥ垎鍜孍nd閮ㄥ垎銆?/p>
鍏堢粰浣犵亴杈撲竴涓濇兂錛岄偅灝辨槸“濡傛灉涓嶈瀹欵nd閮ㄥ垎錛岄偅涔堝氨璁や負End琚瀹氫負琛屽熬”銆傝繖涓蹇靛緢閲嶈鐨勶紝浣嗗線寰浣犱笉浼氶噸瑙嗗畠銆?/p>
Start閮ㄥ垎涔熺敱涓夐儴鍒嗙粍鎴愶紝鍏朵腑鐨凪odifier閮ㄥ垎灝辨槸鎴戜滑涔嬪墠璇磋繃鐨勭被浼糿鍜宺鐨勯夐」閮ㄥ垎銆傛垜浠噸鐐硅璇碨tart閮ㄥ垎鐨凢Start鍜孋.Start銆?/p>
C.Start涔熸槸鍙互鐪佺暐鐨勶紝鐪佺暐鐨勮瘽灝辮〃紺轟粠鏈煙鐨勫紑澶撮儴鍒嗗紑濮嬨備箣鍓嶄緥瀛愪腑鐨?k 2鍜?k 3灝辨槸鐪佺暐浜咰.Start鐨勪緥瀛愬柦銆?/p>
FStart.CStart錛屽叾涓璅Start灝辨槸琛ㄧず浣跨敤鐨勫煙錛岃孋Start鍒欒〃紺哄湪FStart鍩熶腑浠庣鍑犱釜瀛楃寮濮嬬畻“鎺掑簭棣栧瓧絎?#8221;銆?/p>
鍚岀悊錛屽湪End閮ㄥ垎涓紝浣犲彲浠ヨ瀹欶End.CEnd錛屽鏋滀綘鐪佺暐.CEnd錛屽垯琛ㄧず緇撳熬鍒?#8220;鍩熷熬”錛屽嵆鏈煙鐨勬渶鍚庝竴涓瓧絎︺傛垨鑰咃紝濡傛灉浣犲皢CEnd璁懼畾涓?(闆?錛屼篃鏄〃紺虹粨灝懼埌“鍩熷熬”銆?/p>
7 紿佸彂濂囨兂錛屼粠鍏徃鑻辨枃鍚嶇О鐨勭浜屼釜瀛楁瘝寮濮嬭繘琛屾帓搴忥細
$ sort -t ‘ ‘ -k 1.2 facebook.txt
baidu 100 5000
sohu 100 4500
google 110 5000
guge 50 3000
鐪嬶紝鎴戜滑浣跨敤浜?k 1.2錛岃繖灝辮〃紺哄絎竴涓煙鐨勭浜屼釜瀛楃寮濮嬪埌鏈煙鐨勬渶鍚庝竴涓瓧絎︿負姝㈢殑瀛楃涓茶繘琛屾帓搴忋備綘浼氬彂鐜癰aidu鍥犱負絎簩涓瓧姣嶆槸a鑰屽悕鍒楁棣栥俿ohu鍜実oogle絎簩涓瓧絎﹂兘鏄痮錛屼絾sohu鐨刪鍦╣oogle鐨刼鍓嶉潰錛屾墍浠ヤ袱鑰呭垎鍒帓鍦ㄧ浜屽拰絎笁銆俫uge鍙兘灞堝眳絎洓浜嗐?/p>
8 鍙堢獊鍙戝鎯籌紝錛屽彧閽堝鍏徃鑻辨枃鍚嶇О鐨勭浜屼釜瀛楁瘝榪涜鎺掑簭錛屽鏋滅浉鍚岀殑鎸夌収鍛樺伐宸ヨ祫榪涜闄嶅簭鎺掑簭錛?/strong>
$ sort -t ‘ ‘ -k 1.2,1.2 -k 3,3nr facebook.txt
baidu 100 5000
google 110 5000
sohu 100 4500
guge 50 3000
鐢變簬鍙絎簩涓瓧姣嶈繘琛屾帓搴忥紝鎵浠ユ垜浠嬌鐢ㄤ簡-k 1.2,1.2鐨勮〃紺烘柟寮忥紝琛ㄧず鎴戜滑“鍙?#8221;瀵圭浜屼釜瀛楁瘝榪涜鎺掑簭銆傦紙濡傛灉浣犻棶“鎴戜嬌鐢?k 1.2鎬庝箞涓嶈錛?#8221;錛屽綋鐒朵笉琛岋紝鍥犱負浣犵渷鐣ヤ簡End閮ㄥ垎錛岃繖灝辨剰鍛崇潃浣犲皢瀵逛粠絎簩涓瓧姣嶈搗鍒版湰鍩熸渶鍚庝竴涓瓧絎︿負姝㈢殑瀛楃涓茶繘琛屾帓搴忥級銆傚浜庡憳宸ュ伐璧勮繘琛屾帓搴忥紝鎴戜滑涔熶嬌鐢ㄤ簡-k 3,3錛岃繖鏄渶鍑嗙‘鐨勮〃榪幫紝琛ㄧず鎴戜滑“鍙?#8221;瀵規湰鍩熻繘琛屾帓搴忥紝鍥犱負濡傛灉浣犵渷鐣ヤ簡鍚庨潰鐨?錛屽氨鍙樻垚浜嗘垜浠?#8220;瀵圭3涓煙寮濮嬪埌鏈鍚庝竴涓煙浣嶇疆鐨勫唴瀹硅繘琛屾帓搴?#8221;浜嗐?/p>
9 鍦╩odifier閮ㄥ垎榪樺彲浠ョ敤鍒板摢浜涢夐」錛?/strong>
鍙互鐢ㄥ埌b銆乨銆乫銆乮銆乶 鎴?r銆?/p>
鍏朵腑n鍜宺浣犺偗瀹氬凡緇忓緢鐔熸倝浜嗐?/p>
b琛ㄧず蹇界暐鏈煙鐨勭鍒扮┖鐧界鍙楓?/p>
d琛ㄧず瀵規湰鍩熸寜鐓у瓧鍏擱『搴忔帓搴忥紙鍗籌紝鍙冭檻絀虹櫧鍜屽瓧姣嶏級銆?/p>
f琛ㄧず瀵規湰鍩熷拷鐣ュぇ灝忓啓榪涜鎺掑簭銆?/p>
i琛ㄧず蹇界暐“涓嶅彲鎵撳嵃瀛楃”錛屽彧閽堝鍙墦鍗板瓧絎﹁繘琛屾帓搴忋傦紙鏈変簺ASCII灝辨槸涓嶅彲鎵撳嵃瀛楃錛屾瘮濡俓a鏄姤璀︼紝\b鏄鏍鹼紝\n鏄崲琛岋紝\r鏄洖杞︾瓑絳夛級
10 鎬濊冩濊冨叧浜?k鍜?u鑱斿悎浣跨敤鐨勪緥瀛愶細
$ cat facebook.txt
google 110 5000
baidu 100 5000
guge 50 3000
sohu 100 4500
榪欐槸鏈鍘熷鐨刦acebook.txt鏂囦歡銆?/p>
$ sort -n -k 2 facebook.txt
guge 50 3000
baidu 100 5000
sohu 100 4500
google 110 5000
$ sort -n -k 2 -u facebook.txt
guge 50 3000
baidu 100 5000
google 110 5000
褰撹瀹氫互鍏徃鍛樺伐鍩熻繘琛屾暟鍊兼帓搴忥紝鐒跺悗鍔?u鍚庯紝sohu涓琛屽氨琚垹闄や簡錛佸師鏉?u鍙瘑鍒敤-k璁懼畾鐨勫煙錛屽彂鐜扮浉鍚岋紝灝卞皢鍚庣畫鐩稿悓鐨勮閮藉垹闄ゃ?/p>
$ sort -k 1 -u facebook.txt
baidu 100 5000
google 110 5000
guge 50 3000
sohu 100 4500
$ sort -k 1.1,1.1 -u facebook.txt
baidu 100 5000
google 110 5000
sohu 100 4500
榪欎釜渚嬪瓙涔熷悓鐞嗭紝寮澶村瓧絎︽槸g鐨刧uge灝辨病鏈夊垢鍏嶄簬闅俱?/p>
$ sort -n -k 2 -k 3 -u facebook.txt
guge 50 3000
sohu 100 4500
baidu 100 5000
google 110 5000
鍜︼紒榪欓噷璁劇疆浜嗕袱灞傛帓搴忎紭鍏堢駭鐨勬儏鍐典笅錛屼嬌鐢?u灝辨病鏈夊垹闄や換浣曡銆傚師鏉?u鏄細鏉冭 鎵鏈?k閫夐」錛屽皢閮界浉鍚岀殑鎵嶄細鍒犻櫎錛屽彧瑕佸叾涓湁涓綰т笉鍚岄兘涓嶄細杞繪槗鍒犻櫎鐨?)錛堜笉淇★紝浣犲彲浠ヨ嚜宸卞姞涓琛宻ina 100 4500璇曡瘯鐪嬶級
11 鏈璇″紓鐨勬帓搴忥細
$ sort -n -k 2.2,3.1 facebook.txt
guge 50 3000
baidu 100 5000
sohu 100 4500
google 110 5000
浠ョ浜屼釜鍩熺殑絎簩涓瓧絎﹀紑濮嬪埌絎笁涓煙鐨勭涓涓瓧絎︾粨鏉熺殑閮ㄥ垎榪涜鎺掑簭銆?/p>
絎竴琛岋紝浼氭彁鍙? 3錛岀浜岃鎻愬彇00 5錛岀涓夎鎻愬彇00 4錛岀鍥涜鎻愬彇10 5銆?/p>
鍙堝洜涓簊ort璁や負0灝忎簬00灝忎簬000灝忎簬0000….
鍥犳0 3鑲畾鏄湪絎竴涓?0 5鑲畾鏄湪鏈鍚庝竴涓備絾涓轟粈涔?0 5鍗村湪00 4鍓嶉潰鍛紵錛堜綘鍙互鑷繁鍋氬疄楠屾濊冧竴涓嬨傦級
絳旀鎻檽錛氬師鏉?#8220;璺ㄥ煙鐨勮瀹氭槸涓亣璞?#8221;錛宻ort鍙細姣旇緝絎簩涓煙鐨勭浜屼釜瀛楃鍒扮浜屼釜鍩熺殑鏈鍚庝竴涓瓧絎︾殑閮ㄥ垎錛岃屼笉浼氭妸絎笁涓煙鐨勫紑澶村瓧絎︾撼鍏ユ瘮杈冭寖鍥淬傚綋鍙戠幇00鍜?0鐩稿悓鏃訛紝sort灝變細鑷姩姣旇緝絎竴涓煙鍘諱簡銆傚綋鐒禸aidu鍦╯ohu鍓嶉潰浜嗐傜敤涓涓寖渚嬪嵆鍙瘉瀹烇細
$ sort -n -k 2.2,3.1 -k 1,1r facebook.txt
guge 50 3000
sohu 100 4500
baidu 100 5000
google 110 5000
12 鏈夋椂鍊欏湪sort鍛戒護鍚庝細鐪嬪埌+1 -2榪欎簺絎﹀彿錛岃繖鏄粈涔堜笢涓滐紵
鍏充簬榪欑璇硶錛屾渶鏂扮殑sort鏄繖涔堣繘琛岃В閲婄殑錛?/p>
On older systems, `sort’ supports an obsolete origin-zero syntax `+POS1 [-POS2]‘ for specifying sort keys. POSIX 1003.1-2001 (*note Standards conformance::) does not allow this; use `-k’ instead.
鍘熸潵錛岃繖縐嶅彜鑰佺殑琛ㄧず鏂瑰紡宸茬粡琚窐姹頒簡錛屼互鍚庡彲浠ョ悊鐩存皵澹殑閯欒浣跨敤榪欑琛ㄧず鏂規硶鐨勮剼鏈柦錛?/p>
錛堜負浜嗛槻姝㈠彜鑰佽剼鏈殑瀛樺湪錛屽湪榪欏啀璇翠竴涓嬭繖縐嶈〃紺烘柟娉曪紝鍔犲彿琛ㄧずStart閮ㄥ垎錛屽噺鍙瘋〃紺篍nd閮ㄥ垎銆傛渶鏈閲嶈鐨勪竴鐐規槸錛岃繖縐嶆柟寮忔柟娉曟槸浠?寮濮嬭鏁扮殑錛屼互鍓嶆墍璇寸殑絎竴涓煙錛屽湪姝よ琛ㄧず涓虹0涓煙銆備互鍓嶇殑絎?涓瓧絎︼紝鍦ㄦ琛ㄧず涓虹1涓瓧絎︺傛槑鐧斤紵錛?/p>
緇撴潫璇細
鏈枃鏄簰鑱旂綉涓婁粎鏈夌殑姣旇緝鍏ㄧ殑鍏充簬sort鐨刱閫夐」鐨勮榪版枃绔狅紝濡傞渶杞澆璇峰姟蹇呮敞鏄?#8220;杞嚜Linux澶ф-Linux涓婚鍗氬”錛岃阿璋㈠悇浣?)
sort鐨?k閫夐」鍩烘湰灝辨槸榪欏爢鍐呭浜嗭紝濡傛灉澶у鏈変粈涔堣ˉ鍏咃紝灝辯暀璦鍚?) 嬈㈣繋浜ゆ祦錛?/strong>
1 sort鐨勫伐浣滃師鐞?/strong>
sort灝嗘枃浠剁殑姣忎竴琛屼綔涓轟竴涓崟浣嶏紝鐩鎬簰姣旇緝錛屾瘮杈冨師鍒欐槸浠庨瀛楃鍚戝悗錛屼緷嬈℃寜ASCII鐮佸艱繘琛屾瘮杈冿紝鏈鍚庡皢浠栦滑鎸夊崌搴忚緭鍑恒?/p>
[rocrocket@rocrocket programming]$ cat seq.txt
banana
apple
pear
orange
[rocrocket@rocrocket programming]$ sort seq.txt
apple
banana
orange
pear
2 sort鐨?u閫夐」
瀹冪殑浣滅敤寰堢畝鍗曪紝灝辨槸鍦ㄨ緭鍑鴻涓幓闄ら噸澶嶈銆?/p>
[rocrocket@rocrocket programming]$ cat seq.txt
banana
apple
pear
orange
pear
[rocrocket@rocrocket programming]$ sort seq.txt
apple
banana
orange
pear
pear
[rocrocket@rocrocket programming]$ sort -u seq.txt
apple
banana
orange
pear
pear鐢變簬閲嶅琚?u閫夐」鏃犳儏鐨勫垹闄や簡銆?/p>
3 sort鐨?r閫夐」
sort榛樿鐨勬帓搴忔柟寮忔槸鍗囧簭錛屽鏋滄兂鏀規垚闄嶅簭錛屽氨鍔犱釜-r灝辨悶瀹氫簡銆?/p>
[rocrocket@rocrocket programming]$ cat number.txt
1
3
5
2
4
[rocrocket@rocrocket programming]$ sort number.txt
1
2
3
4
5
[rocrocket@rocrocket programming]$ sort -r number.txt
5
4
3
2
1
4 sort鐨?o閫夐」
鐢變簬sort榛樿鏄妸緇撴灉杈撳嚭鍒版爣鍑嗚緭鍑猴紝鎵浠ラ渶瑕佺敤閲嶅畾鍚戞墠鑳藉皢緇撴灉鍐欏叆鏂囦歡錛屽艦濡俿ort filename > newfile銆?/p>
浣嗘槸錛屽鏋滀綘鎯蟲妸鎺掑簭緇撴灉杈撳嚭鍒板師鏂囦歡涓紝鐢ㄩ噸瀹氬悜鍙氨涓嶈浜嗐?/p>
[rocrocket@rocrocket programming]$ sort -r number.txt > number.txt
[rocrocket@rocrocket programming]$ cat number.txt
[rocrocket@rocrocket programming]$
鐪嬶紝绔熺劧灝唍umber娓呯┖浜嗐?/p>
灝卞湪榪欎釜鏃跺欙紝-o閫夐」鍑虹幇浜嗭紝瀹冩垚鍔熺殑瑙e喅浜嗚繖涓棶棰橈紝璁╀綘鏀懼績鐨勫皢緇撴灉鍐欏叆鍘熸枃浠躲傝繖鎴栬涔熸槸-o姣旈噸瀹氬悜鐨勫敮涓浼樺娍鎵鍦ㄣ?/strong>
[rocrocket@rocrocket programming]$ cat number.txt
1
3
5
2
4
[rocrocket@rocrocket programming]$ sort -r number.txt -o number.txt
[rocrocket@rocrocket programming]$ cat number.txt
5
4
3
2
1
5 sort鐨?n閫夐」
浣犳湁娌℃湁閬囧埌榪?0姣?灝忕殑鎯呭喌銆傛垜鍙嶆閬囧埌榪囥傚嚭鐜拌繖縐嶆儏鍐墊槸鐢變簬鎺掑簭紼嬪簭灝嗚繖浜涙暟瀛楁寜瀛楃鏉ユ帓搴忎簡錛屾帓搴忕▼搴忎細鍏堟瘮杈?鍜?錛屾樉鐒?灝忥紝鎵浠ュ氨灝?0鏀懼湪2鍓嶉潰鍠姐傝繖涔熸槸sort鐨勪竴璐綔椋庛?/p>
鎴戜滑濡傛灉鎯蟲敼鍙樿繖縐嶇幇鐘訛紝灝辮浣跨敤-n閫夐」錛屾潵鍛婅瘔sort錛?#8220;瑕佷互鏁板兼潵鎺掑簭”錛?/p>
[rocrocket@rocrocket programming]$ cat number.txt
1
10
19
11
2
5
[rocrocket@rocrocket programming]$ sort number.txt
1
10
11
19
2
5
[rocrocket@rocrocket programming]$ sort -n number.txt
1
2
5
10
11
19
6 sort鐨?t閫夐」鍜?k閫夐」
濡傛灉鏈変竴涓枃浠剁殑鍐呭鏄繖鏍鳳細
[rocrocket@rocrocket programming]$ cat facebook.txt
banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4
榪欎釜鏂囦歡鏈変笁鍒楋紝鍒椾笌鍒椾箣闂寸敤鍐掑彿闅斿紑浜嗭紝絎竴鍒楄〃紺烘按鏋滅被鍨嬶紝絎簩鍒楄〃紺烘按鏋滄暟閲忥紝絎笁鍒楄〃紺烘按鏋滀環鏍箋?/p>
閭d箞鎴戞兂浠ユ按鏋滄暟閲忔潵鎺掑簭錛屼篃灝辨槸浠ョ浜屽垪鏉ユ帓搴忥紝濡備綍鍒╃敤sort瀹炵幇錛?/p>
騫稿ソ錛宻ort鎻愪緵浜?t閫夐」錛屽悗闈㈠彲浠ヨ瀹氶棿闅旂銆傦紙鏄笉鏄兂璧蜂簡cut鍜宲aste鐨?d閫夐」錛屽叡楦o綖锝烇級
鎸囧畾浜嗛棿闅旂涔嬪悗錛屽氨鍙互鐢?k鏉ユ寚瀹氬垪鏁頒簡銆?/p>
[rocrocket@rocrocket programming]$ sort -n -k 2 -t : facebook.txt
apple:10:2.5
orange:20:3.4
banana:30:5.5
pear:90:2.3
鎴戜滑浣跨敤鍐掑彿浣滀負闂撮殧絎︼紝騫墮拡瀵圭浜屽垪鏉ヨ繘琛屾暟鍊煎崌搴忔帓搴忥紝緇撴灉寰堜護浜烘弧鎰忋?/p>
7 鍏朵粬鐨剆ort甯哥敤閫夐」
-f浼氬皢灝忓啓瀛楁瘝閮借漿鎹負澶у啓瀛楁瘝鏉ヨ繘琛屾瘮杈冿紝浜﹀嵆蹇界暐澶у皬鍐?/p>
-c浼氭鏌ユ枃浠舵槸鍚﹀凡鎺掑ソ搴忥紝濡傛灉涔卞簭錛屽垯杈撳嚭絎竴涓貢搴忕殑琛岀殑鐩稿叧淇℃伅錛屾渶鍚庤繑鍥?
-C浼氭鏌ユ枃浠舵槸鍚﹀凡鎺掑ソ搴忥紝濡傛灉涔卞簭錛屼笉杈撳嚭鍐呭錛屼粎榪斿洖1
-M浼氫互鏈堜喚鏉ユ帓搴忥紝姣斿JAN灝忎簬FEB絳夌瓑
-b浼氬拷鐣ユ瘡涓琛屽墠闈㈢殑鎵鏈夌┖鐧介儴鍒嗭紝浠庣涓涓彲瑙佸瓧絎﹀紑濮嬫瘮杈冦?/p>
鏈畬寰呯畫錛屾暚璇鋒湡寰咃細銆妔ort鍛戒護鐨刱閫夐」澶ц璁恒?/strong>
#! /bin/bash
for file in *.log
do
awk 'BEGIN{var=" ' "$file" ' "}END{print var;}' "$file"
done
鍦ㄨ繖閲屾渶璁╀漢娣鋒穯鐨勬槸鍗曞紩鍙峰拰鍙屽紩鍙?/span>
鎴戜滑鍙互鍒╃敤bash -x test.sh鏉ユ墽琛岃剼鏈紝鍏朵細灝嗚剼鏈腑鐨剆hell鍙橀噺灞曞紑錛屼究浜庤皟璇?/strong>
’鍗曞紩鍙蜂腑闄わ紙’錛夐兘涓哄師鏈瓧絎︼紝娌℃湁鐗規畩鎰忎箟
"鍙屽紩鍙蜂腑闄わ紙 $`"錛?/strong> 閮戒負鍘熸湰瀛楃錛屾病鏈夌壒孌婃剰涔?/strong>
鍥犳錛屼笂榪板彲浠ュ睍寮涓?
絎竴嬈★細
awk 'BEGIN{var="a.log"}END{print var;}‘ a.log
絎簩嬈★細
awk 'BEGIN{var="b.log"}END{print var;}‘ b.log
濡傛灉灝嗗叾鍐欐垚 awk 'BEGIN{var=' "$file" '}END{print var;}' "$file"錛屽垯灞曞紑涓猴細
絎竴嬈★細
awk 'BEGIN{var=a.log}END{print var;}‘ a.log
絎簩嬈★細
awk 'BEGIN{var=b.log}END{print var;}‘ b.log
浼氭姤閿欙紝鍥犱負awk涓瓧絎︿覆瑕佺敤鍙屽紩鍙鋒嫭璧鋒潵
灝嗗叾鍒嗚В鎴愪互涓嬭繖鏍鳳紝渚夸簬鐞嗚В錛?/strong>
'BEGIN{var=" ' "$file" ' "}END{print var;}' 榪欎笁閮ㄥ垎涓哄瓧絎︿覆榪炴帴鍏崇郴
## eval鐢ㄦ硶涓変緥 ##
## shell:/bin/sh ##
## yhc 2002.09.26 18:00 ##
#渚嬩竴:
#瀵繪壘鍚堢鏉′歡鐨勫彉閲忓悕,鐒跺悗灝嗚鍙橀噺鐨勫艱祴浜堝彟涓鍙橀噺
v1=aaa
v2=bbb
c=1
if [ $c -eq 1 ]
then
vname=v$c #鎵懼埌絎﹀悎鏉′歡鐨勫彉閲忓悕涓簐1
eval vvv="$"$vname ; echo vvv: $vvv #灝嗗彉閲弙1鐨勫艱祴浜坴vv,鍗?浣縱vv=aaa
eval vvv='$'$vname ; echo vvv: $vvv #灝嗗彉閲弙1鐨勫艱祴浜坴vv,鍗?浣縱vv=aaa
#eval vvv=$$vname ; echo vvv: $vvv #閿欒鐢ㄦ硶
fi
#渚嬩簩:#浠ュ彉閲弙1鐨勫糰aa浣滀負鍙橀噺鍚?灝嗗彉閲弙aaa鐨勫艱祴浜堣繖涓鏂板畾涔夌殑鍙橀噺aaa
v1=aaa ; vaaa="This is aaa"
#eval $v1=$vaaa ; echo aaa: $aaa #閿欒鐢ㄦ硶
#eval $v1="$vaaa" ; echo aaa: $aaa #閿欒鐢ㄦ硶
eval $v1='$vaaa' ; echo aaa: $aaa
#渚嬩笁:
#浠ュ彉閲弙1鐨勫糰aa浣滀負鍙橀噺鍚?騫跺皢鍙橀噺鍚嶅瓧涓蹭綔涓哄艱祴浜堣嚜韜?br>v1=aaa ; vaaa="This is aaa"
eval $v1=$v1 ; echo aaa: $aaa #涓庝緥浜岀殑閿欒鐢ㄦ硶涓嶅悓,榪欎竴鐢ㄦ硶鏄紜殑
eval $v1="$v1" ; echo aaa: $aaa #涓庝緥浜岀殑閿欒鐢ㄦ硶涓嶅悓,榪欎竴鐢ㄦ硶鏄紜殑
eval $v1='$v1' ; echo aaa: $aaa
璇ユ枃绔犺漿杞借嚜[紼嬪簭浜虹敓]錛?lt;a href="
娉ㄦ剰錛?br>
銆銆(1) 瀵逛俊鍙?1(孌佃繚渚?涓嶈兘鎹曟崏錛屽洜涓簊hell鏈韓闇瑕佹崟鎹夎淇″彿鍘昏繘琛屽唴瀛樼殑杞偍銆?br>
銆銆(2) 鍦╰rap涓彲浠ュ畾涔夊淇″彿0鐨勫鐞?瀹為檯涓婃病鏈夎繖涓俊鍙?錛?shell紼嬪簭鍦ㄥ叾緇堟(濡?br>
銆銆鎵цexit璇彞)鏃跺彂鍑鴻淇″彿銆?br>
銆銆(3) 鍦ㄦ崟鎹夊埌signal-list涓寚瀹氱殑淇″彿騫舵墽琛屽畬鐩稿簲鐨勫懡浠や箣鍚庯紝 濡傛灉榪欎簺鍛戒護娌℃湁
銆銆灝唖hell紼嬪簭緇堟鐨勮瘽錛宻hell紼嬪簭灝嗙戶緇墽琛屾敹鍒頒俊鍙鋒椂鎵鎵ц鐨勫懡浠ゅ悗闈㈢殑鍛戒護錛岃繖鏍峰皢
銆銆寰堝鏄撳鑷磗hell紼嬪簭鏃犳硶緇堟銆?br>
銆銆鍙﹀錛屽湪trap璇彞涓紝鍗曞紩鍙峰拰鍙屽紩鍙鋒槸涓嶅悓鐨勶紝褰搒hell紼嬪簭絎竴嬈$鍒皌rap璇彞鏃訛紝
銆銆灝嗘妸commands涓殑鍛戒護鎵弿涓閬嶃傛鏃惰嫢commands鏄敤鍗曞紩鍙鋒嫭璧鋒潵鐨勮瘽錛岄偅涔坰hell涓嶄細
銆銆瀵筩ommands涓殑鍙橀噺鍜屽懡浠よ繘琛屾浛鎹紝 鍚﹀垯commands涓殑鍙橀噺鍜屽懡浠ゅ皢鐢ㄥ綋鏃跺叿浣撶殑鍊兼潵
kill -l鍙互鍒楀嚭緋葷粺鐨勪俊鍙?/p>
閫氬父鎴戜滑闇瑕佸拷鐣ョ殑淇″彿鏈夊洓涓紝鍗籌細HUP, INT, QUIT, TSTP錛屼篃灝辨槸淇″彿1, 2, 3, 24
浣跨敤榪欐牱鐨勮鍙ュ彲浠ヤ嬌榪欎簺涓柇淇″彿琚拷鐣ワ細
trap "" 1 2 3 24 鎴?trap "" HUP INT QUIT TSTP
鐢?trap 錛? 2 3 24 鎴?trap HUP INT QUIT TSTP浣垮叾鍥炲榛樿鍊箋?
鐢╯tty -a鍙互鍒楀嚭涓柇淇″彿涓庨敭鐩樼殑瀵瑰簲錛屽垎鍒墽琛屼笂闈㈢殑鍛戒護鍚庯紝榪愯
tail -f /etc/passwd, 鐒跺悗灝濊瘯鐢ㄩ敭鐩樹腑鏂紝璇曡瘯涓ょ鎯呭喌錛堥粯璁ゅ拰蹇界暐錛変笅鏈変綍涓嶅悓銆?
鏇存柟渚跨殑鏄垜浠彲浠ョ敤鍦╯hell涓敤trap瀹氫箟鎴戜滑鑷繁鐨勪俊鍙峰鐞嗙▼搴?/p>
| gsub(r,s) | 鍦ㄦ暣涓?0涓敤s鏇夸唬r |
| gsub(r,s,t) | 鍦ㄦ暣涓猼涓敤s鏇夸唬r |
| index(s,t) |
榪斿洖s涓瓧絎︿覆t鐨勭涓浣嶇疆 |
| length(s) |
榪斿洖s闀垮害 |
| match(s,r) |
嫻嬭瘯s鏄惁鍖呭惈鍖歸厤r鐨勫瓧絎︿覆 |
| split(s,a,fs) | 鍦╢s涓婂皢s鍒嗘垚搴忓垪a |
| sprint(fmt,exp) | 榪斿洖緇廸mt鏍煎紡鍖栧悗鐨別xp |
| sub(r,s) |
鐢?0涓渶宸﹁竟鏈闀跨殑瀛愪覆浠f浛s |
| substr(s,p) | 榪斿洖瀛楃涓瞫涓粠p寮濮嬬殑鍚庣紑閮ㄥ垎 |
| substr(s,p,n) |
榪斿洖瀛楃涓瞫涓粠p寮濮嬮暱搴︿負n鐨勫悗緙閮ㄥ垎 |