ºìÁªLinuxÃÅ»§
Linux°ïÖú

bash(Ïê½â)

·¢²¼Ê±¼ä:2006-10-12 19:19:36À´Ô´:ºìÁª×÷Õß:tiandixin
×î¼òµ¥µÄÀý×Ó ---- Hello World!
¼¸ºõËùÓеĽ²½â±à³ÌµÄÊ鏸¶ÁÕߵĵÚÒ»¸öÀý×Ó¶¼ÊÇ Hello World ³ÌÐò£¬ÄÇôÎÒÃǽñÌìÒ²¾Í´ÓÕâ¸öÀý×Ó³ö·¢£¬À´Öð²½Á˽â BASH¡£
Óà vi ±à¼­Æ÷±à¼­Ò»¸ö hello ÎļþÈçÏ£º

#!/bin/bash
# This is a very simple example
echo Hello World

ÕâÑù×î¼òµ¥µÄÒ»¸ö BASH ³ÌÐò¾Í±àдÍêÁË¡£ÕâÀïÓм¸¸öÎÊÌâÐèҪ˵Ã÷һϣº

Ò»£¬µÚÒ»ÐÐµÄ #! ÊÇʲôÒâ˼
¶þ£¬µÚÒ»ÐÐµÄ /bin/bash ÓÖÊÇʲôÒâ˼
Èý£¬µÚ¶þÐÐÊÇ×¢ÊÍÂð
ËÄ£¬echo Óï¾ä
Î壬ÈçºÎÖ´ÐиóÌÐò

#! ÊÇ˵Ã÷ hello Õâ¸öÎļþµÄÀàÐ͵ģ¬ÓеãÀàËÆÓÚ Windows ϵͳÏÂÓò»Í¬Îļþºó׺À´±íʾ²»Í¬ÎļþÀàÐ͵ÄÒâ˼£¨µ«²»Ïàͬ£©¡£linux ϵͳ¸ù¾Ý "#!" ¼°¸Ã×Ö´®ºóÃæµÄÐÅϢȷ¶¨¸ÃÎļþµÄÀàÐÍ£¬¹ØÓÚÕâÒ»ÎÊÌâͬѧÃÇ»ØÈ¥ÒÔºó¿ÉÒÔͨ¹ý "man magic"ÃüÁî ¼° /usr/share/magic ÎļþÀ´Á˽âÕâ·½ÃæµÄ¸ü¶àÄÚÈÝ¡£ÔÚ BASH ÖÐ µÚÒ»ÐÐµÄ "#!" ¼°ºóÃæµÄ "/bin/bash" ¾Í±íÃ÷¸ÃÎļþÊÇÒ»¸ö BASH ³ÌÐò£¬ÐèÒªÓÉ /bin Ŀ¼Ï嵀 bash ³ÌÐòÀ´½âÊÍÖ´ÐС£BASH Õâ¸ö³ÌÐòÒ»°ãÊÇ´æ·ÅÔÚ /bin Ŀ¼Ï£¬Èç¹ûÄãµÄ Linux ϵͳ±È½ÏÌØ±ð£¬bash Ò²ÓпÉÄܱ»´æ·ÅÔÚ /sbin ¡¢/usr/local/bin ¡¢/usr/bin ¡¢/usr/sbin »ò /usr/local/sbin ÕâÑùµÄĿ¼Ï£»Èç¹û»¹ÕÒ²»µ½£¬Äã¿ÉÒÔÓà "locate bash" "find / -name bash 2> /dev/null" »ò "whereis bash" ÕâÈý¸öÃüÁîÕÒ³ö bash ËùÔÚµÄλÖã»Èç¹ûÈÔÈ»ÕÒ²»µ½£¬ÄÇÄã¿ÉÄÜÐèÒª×Ô¼º¶¯ÊÖ°²×°Ò»¸ö BASH Èí¼þ°üÁË¡£

µÚ¶þÐÐµÄ "# This is a ..." ¾ÍÊÇ BASH ³ÌÐòµÄ×¢ÊÍ£¬ÔÚ BASH ³ÌÐòÖдӡ°#¡±ºÅ£¨×¢Ò⣺ºóÃæ½ô½Ó×ÅÊÇ¡°!¡±ºÅµÄ³ýÍ⣩¿ªÊ¼µ½ÐÐβµÄ¶àÓв¿·Ö¾ù±»¿´×÷ÊdzÌÐòµÄ×¢ÊÍ¡£µÄÈýÐÐµÄ echo Óï¾äµÄ¹¦ÄÜÊÇ°Ñ echo ºóÃæµÄ×Ö·û´®Êä³öµ½±ê×¼Êä³öÖÐÈ¥¡£ÓÉÓÚ echo ºó¸úµÄÊÇ "Hello World" Õâ¸ö×Ö·û´®£¬Òò´Ë "Hello World"Õâ¸ö×Ö´®¾Í±»ÏÔʾÔÚ¿ØÖÆÌ¨ÖÕ¶ËµÄÆÁÄ»ÉÏÁË¡£ÐèҪעÒâµÄÊÇ BASH Öеľø´ó¶àÊýÓï¾ä½áβ´¦¶¼Ã»Óзֺš£

ÈçºÎÖ´ÐиóÌÐòÄØ£¿ÓÐÁ½ÖÖ·½·¨£ºÒ»ÖÖÊÇÏÔÊ½ÖÆ¶¨ BASH È¥Ö´ÐУº

$ bash hello »ò
$ sh hello £¨ÕâÀï sh ÊÇÖ¸Ïò bash µÄÒ»¸öÁ´½Ó£¬¡°lrwxrwxrwx 1 root root 4 Aug 20 05:41 /bin/sh -> bash¡±£©

»òÕß¿ÉÒÔÏȽ« hello Îļþ¸ÄΪ¿ÉÒÔÖ´ÐеÄÎļþ£¬È»ºóÖ±½ÓÔËÐÐËü£¬´ËʱÓÉÓÚ hello ÎļþµÚÒ»ÐÐµÄ "#! /bin/bash" µÄ×÷Óã¬ÏµÍ³»á×Ô¶¯ÓÃ/bin/bash ³ÌÐòÈ¥½âÊÍÖ´ÐÐ hello ÎļþµÄ£º

$ chmod u+x hello
$ ./hello

´Ë´¦Ã»ÓÐÖ±½Ó ¡°$ hello¡±ÊÇÒòΪµ±Ç°Ä¿Â¼²»Êǵ±Ç°Óû§¿ÉÖ´ÐÐÎļþµÄĬÈÏĿ¼£¬¶ø½«µ±Ç°Ä¿Â¼¡°.¡±ÉèΪĬÈÏĿ¼ÊÇÒ»¸ö²»°²È«µÄÉèÖá£

ÐèҪעÒâµÄÊÇ£¬BASH ³ÌÐò±»Ö´Ðкó£¬Êµ¼ÊÉÏ linux ϵͳÊÇÁíÍ⿪ÉèÁËÒ»¸ö½ø³ÌÀ´ÔËÐеġ£

±äÁ¿ºÍÔËËã

ÎÒÃÇÏÈÀ´´ÓÕûÌåÉϰÑÎÕһϠBASH ÖбäÁ¿µÄÓ÷¨£¬È»ºóÔÙÈ¥·ÖÎö BASH ÖбäÁ¿Ê¹ÓÃÓë C ÓïÑÔÖеIJ»Í¬¡£BASH ÖеıäÁ¿¶¼ÊDz»Äܺ¬Óб£Áô×Ö£¬²»Äܺ¬ÓÐ "-" µÈ±£Áô×Ö·û£¬Ò²²»Äܺ¬Óпոñ¡£
¼òµ¥±äÁ¿
ÔÚ BASH ÖбäÁ¿¶¨ÒåÊDz»ÐèÒªµÄ£¬Ã»ÓÐ "int i" ÕâÑùµÄ¶¨Òå¹ý³Ì¡£Èç¹ûÏëÓÃÒ»¸ö±äÁ¿£¬Ö»ÒªËûûÓÐÔÚÇ°Ãæ±»¶¨Òå¹ý£¬¾ÍÖ±½Ó¿ÉÒÔÓ㬵±È»ÄãʹÓøñäÁ¿µÄµÚÒ»ÌõÓï¾äÓ¦¸ÃÊǶÔËû¸³³õÖµÁË£¬Èç¹ûÄã²»¸³³õֵҲû¹ØÏµ£¬Ö»²»¹ý¸Ã±äÁ¿Êǿգ¨ ×¢Ò⣺ÊÇ NULL£¬²»ÊÇ 0 £©¡£²»¸ø±äÁ¿¸³³õÖµËäÈ»Óï·¨Éϲ»·´¶Ô£¬µ«²»ÊÇÒ»¸öºÃµÄ±à³Ìϰ¹ß¡£ºÃÁËÎÒÃÇ¿´¿´ÏÂÃæµÄÀý×Ó£º

Ê×ÏÈÓà vi ±à¼­ÏÂÃæÕâ¸öÎļþ hello2£º

#!/bin/bash
# give the initialize value to STR
STR="Hello World"
echo $STR

ÔÚÉÏÃæÕâ¸ö³ÌÐòÖÐÎÒÃÇÐèҪעÒâÏÂÃæ¼¸µã£º

Ò»£¬±äÁ¿¸³ÖµÊ±£¬'='×óÓÒÁ½±ß¶¼²»ÄÜÓпոñ£»
¶þ£¬BASH ÖеÄÓï¾ä½áβ²»ÐèÒª·ÖºÅ£¨";"£©£»
Èý£¬³ýÁËÔÚ±äÁ¿¸³ÖµºÍÔÚFORÑ­»·Óï¾äÍ·ÖУ¬BASH ÖеıäÁ¿Ê¹ÓñØÐëÔÚ±äÁ¿Ç°¼Ó"$"·ûºÅ£¬Í¬Ñ§ÃÇ¿ÉÒÔ½«ÉÏÃæ³ÌÐòÖеÚÈýÐиÄΪ "echo STR" ÔÙÊÔÊÔ£¬¿´¿´»á³öʲô½á¹û¡£
ËÄ£¬ÓÉÓÚ BASH ³ÌÐòÊÇÔÚÒ»¸öеĽø³ÌÖÐÔËÐеģ¬ËùÒԸóÌÐòÖеıäÁ¿¶¨ÒåºÍ¸³Öµ²»»á¸Ä±äÆäËû½ø³Ì»òԭʼ Shell ÖÐͬÃû±äÁ¿µÄÖµ£¬Ò²²»»áÓ°ÏìËûÃǵÄÔËÐС£

¸üϸÖµÄÎĵµÉõÖÁÌáµ½ÒÔµ«ÒýºÅÀ¨ÆðÀ´µÄ±äÁ¿½«²»±» BASH ½âÊÍΪ±äÁ¿£¬Èç '$STR' £¬¶ø±»¿´³ÉΪ´¿´âµÄ×Ö·û´®¡£¶øÇÒ¸üΪ±ê×¼µÄ±äÁ¿ÒýÓ÷½Ê½ÊÇ ${STR} ÕâÑùµÄ£¬$STR ×Ô²»¹ýÊÇ¶Ô ${STR} µÄÒ»ÖÖ¼ò»¯¡£ÔÚ¸´ÔÓÇé¿öÏ£¨¼´ÓпÉÄܲúÉúÆçÒåµÄµØ·½£©×îºÃÓôø {} µÄ±íʾ·½Ê½¡£

BASH ÖеıäÁ¿¼ÈÈ»²»ÐèÒª¶¨Ò壬Ҳ¾ÍûÓÐÀàÐÍһ˵£¬Ò»¸ö±äÁ¿¼´¿ÉÒÔ±»¶¨ÒåΪһ¸ö×Ö·û´®£¬Ò²¿ÉÒÔ±»ÔÙ¶¨ÒåΪÕûÊý¡£Èç¹û¶Ô¸Ã±äÁ¿½øÐÐÕûÊýÔËË㣬Ëû¾Í±»½âÊÍΪÕûÊý£»Èç¹û¶ÔËû½øÐÐ×Ö·û´®²Ù×÷£¬Ëû¾Í±»¿´×÷Ϊһ¸ö×Ö·û´®¡£Çë¿´ÏÂÃæµÄÀý×Ó£º

#!/bin/bash
x=1999
let "x = $x + 1"
echo $x
x="olympic'"$x
echo $x

¹ØÓÚÕûÊý±äÁ¿¼ÆË㣬ÓÐÈçϼ¸ÖÖ£º" + - * / % "£¬ËûÃǵÄÒâ˼ºÍ×ÖÃæÒâ˼Ïàͬ¡£ÕûÊýÔËËãÒ»°ãͨ¹ý let ºÍ expr ÕâÁ½¸öÖ¸ÁîÀ´ÊµÏÖ£¬Èç¶Ô±äÁ¿ x ¼Ó 1 ¿ÉÒÔд×÷£ºlet "x = $x + 1" »òÕß x=`expr $x + 1`

ÔڱȽϲÙ×÷ÉÏ£¬ÕûÊý±äÁ¿ºÍ×Ö·û´®±äÁ¿¸÷²»Ïàͬ£¬Ïê¼ûÏÂ±í£º

¶ÔÓ¦µÄ²Ù×÷ ÕûÊý²Ù×÷ ×Ö·û´®²Ù×÷
Ïàͬ -eq =
²»Í¬ -ne !=
´óÓÚ -gt >
СÓÚ -lt <
´óÓÚ»òµÈÓÚ -ge
СÓÚ»òµÈÓÚ -le
Ϊ¿Õ -z
²»Îª¿Õ -n


±ÈÈ磺

±È½Ï×Ö·û´® a ºÍ b ÊÇ·ñÏàµÈ¾Íд×÷£ºif [ $a = $b ]
ÅжÏ×Ö·û´® a ÊÇ·ñΪ¿Õ¾Íд×÷£º if [ -z $a ]
ÅжÏÕûÊý±äÁ¿ a ÊÇ·ñ´óÓÚ b ¾Íд×÷£ºif [ $a -gt $b ]

¸üϸÖµÄÎĵµÍƼöÔÚ×Ö·û´®±È½Ïʱ¾¡Á¿²»ÒªÊ¹Óà -n £¬¶øÓà ! -z À´´úÌæ¡££¨ÆäÖзûºÅ "!" ±íʾÇó·´²Ù×÷£©

BASH ÖеıäÁ¿³ýÁËÓÃÓÚ¶Ô ÕûÊý ºÍ ×Ö·û´® ½øÐвÙ×÷ÒÔÍ⣬ÁíÒ»¸ö×÷ÓÃÊÇ×÷ΪÎļþ±äÁ¿¡£BASH ÊÇ linux ²Ù×÷ϵͳµÄ Shell£¬Òò´ËϵͳµÄÎļþ±ØÈ»ÊÇ BASH ÐèÒª²Ù×÷µÄÖØÒª¶ÔÏó£¬Èç if [ -x /root ] ¿ÉÒÔÓÃÓÚÅÐ¶Ï /root Ŀ¼ÊÇ·ñ¿ÉÒÔ±»µ±Ç°Óû§½øÈ롣ϱíÁгöÁË BASH ÖÐÓÃÓÚÅжÏÎļþÊôÐԵIJÙ×÷·û£º

ÔËËã·û º¬Ò壨 Âú×ãÏÂÃæÒªÇóʱ·µ»Ø TRUE £©

-e file Îļþ file ÒѾ­´æÔÚ
-f file Îļþ file ÊÇÆÕͨÎļþ
-s file Îļþ file ´óС²»ÎªÁã
-d file Îļþ file ÊÇÒ»¸öĿ¼
-r file Îļþ file ¶Ôµ±Ç°Óû§¿ÉÒÔ¶ÁÈ¡
-w file Îļþ file ¶Ôµ±Ç°Óû§¿ÉÒÔдÈë
-x file Îļþ file ¶Ôµ±Ç°Óû§¿ÉÒÔÖ´ÐÐ
-g file Îļþ file µÄ GID ±êÖ¾±»ÉèÖÃ
-u file Îļþ file µÄ UID ±êÖ¾±»ÉèÖÃ
-O file Îļþ file ÊÇÊôÓÚµ±Ç°Óû§µÄ
-G file Îļþ file µÄ×é ID ºÍµ±Ç°Óû§Ïàͬ
file1 -nt file2 Îļþ file1 ±È file2 ¸üÐÂ
file1 -ot file2 Îļþ file1 ±È file2 ¸üÀÏ


×¢Ò⣺ÉϱíÖÐµÄ file ¼° file1¡¢file2 ¶¼ÊÇָij¸öÎļþ»òĿ¼µÄ·¾¶¡£

¹ØÓÚ¾Ö²¿±äÁ¿
ÔÚ BASH ³ÌÐòÖÐÈç¹ûÒ»¸ö±äÁ¿±»Ê¹ÓÃÁË£¬ÄÇôֱµ½¸Ã³ÌÐòµÄ½á⣬¸Ã±äÁ¿¶¼Ò»Ö±ÓÐЧ¡£ÎªÁËʹµÃij¸ö±äÁ¿´æÔÚÓÚÒ»¸ö¾Ö²¿³ÌÐò¿éÖУ¬¾ÍÒýÈëÁ˾ֲ¿±äÁ¿µÄ¸ÅÄî¡£BASH ÖУ¬ÔÚ±äÁ¿Ê״α»¸³³õֵʱ¼ÓÉÏ local ¹Ø¼ü×־ͿÉÒÔÉùÃ÷Ò»¸ö¾Ö²¿±äÁ¿£¬ÈçÏÂÃæÕâ¸öÀý×Ó£º

#!/bin/bash
HELLO=Hello
function hello {
¡¡¡¡local HELLO=World
¡¡¡¡echo $HELLO
}
echo $HELLO
hello
echo $HELLO

¸Ã³ÌÐòµÄÖ´Ðнá¹ûÊÇ£º

Hello
World
Hello

Õâ¸öÖ´Ðнá¹û±íÃ÷È«¾Ö±äÁ¿ $HELLO µÄÖµÔÚÖ´Ðк¯Êý hello ʱ²¢Ã»Óб»¸Ä±ä¡£Ò²¾ÍÊÇ˵¾Ö²¿±äÁ¿ $HELLO µÄÓ°ÏìÖ»´æÔÚÓÚº¯ÊýÄǸö³ÌÐò¿éÖС£

BASH ÖеıäÁ¿Óë C ÓïÑÔÖбäÁ¿µÄÇø±ð
ÕâÀïÎÒÃÇΪԭÀ´²»ÊìϤ BASH ±à³Ì£¬µ«ÊǷdz£ÊìϤ C ÓïÑԵijÌÐòÔ±×ܽáÒ»ÏÂÔÚ BASH »·¾³ÖÐʹÓñäÁ¿ÐèҪעÒâµÄÎÊÌâ¡£

1£¬BASH ÖеıäÁ¿ÔÚÒýÓÃʱ¶¼ÐèÒªÔÚ±äÁ¿Ç°¼ÓÉÏ "$" ·ûºÅ£¨ µÚÒ»´Î¸³Öµ¼°ÔÚForÑ­»·µÄÍ·²¿²»ÓÃ¼Ó "$"·ûºÅ £©£»
2£¬BASH ÖÐûÓи¡µãÔËË㣬Òò´ËÒ²¾ÍûÓи¡µãÀàÐ͵ıäÁ¿¿ÉÓã»
3£¬BASH ÖеÄÕûÐαäÁ¿µÄ±È½Ï·ûºÅÓë C ÓïÑÔÖÐÍêÈ«²»Í¬£¬¶øÇÒÕûÐαäÁ¿µÄËãÊõÔËËãÒ²ÐèÒª¾­¹ý let »ò expr Óï¾äÀ´´¦Àí£»



[Ŀ¼]

--------------------------------------------------------------------------------


ÊäÈëÊä³ö

¹ØÓÚÊäÈë¡¢Êä³öºÍ´íÎóÊä³ö
ÔÚ×Ö·ûÖÕ¶Ë»·¾³ÖУ¬±ê×¼ÊäÈë/±ê×¼Êä³öµÄ¸ÅÄîºÜºÃÀí½â¡£ÊäÈë¼´Ö¸¶ÔÒ»¸öÓ¦ÓóÌÐò»òÃüÁîµÄÊäÈ룬ÎÞÂÛÊÇ´Ó¼üÅÌÊäÈ뻹ÊÇ´Ó±ðµÄÎļþÊäÈ룻Êä³ö¼´Ö¸Ó¦ÓóÌÐò»òÃüÁî²úÉúµÄһЩÐÅÏ¢£»Óë Windows ϵͳϲ»Í¬µÄÊÇ£¬linux ϵͳÏ»¹ÓÐÒ»¸ö±ê×¼´íÎóÊä³öµÄ¸ÅÄÕâ¸ö¸ÅÄîÖ÷ÒªÊÇΪ³ÌÐòµ÷ÊÔºÍϵͳά»¤Ä¿µÄ¶øÉèÖõ쬴íÎóÊä³öÓÚ±ê×¼Êä³ö·Ö¿ª¿ÉÒÔÈÃһЩ¸ß¼¶µÄ´íÎóÐÅÏ¢²»¸ÉÈÅÕý³£µÄÊä³öÐÅÏ¢£¬´Ó¶ø·½±ãÒ»°ãÓû§µÄʹÓá£
ÔÚ linux ϵͳÖУº±ê×¼ÊäÈë(stdin)ĬÈÏΪ¼üÅÌÊäÈ룻±ê×¼Êä³ö(stdout)ĬÈÏΪÆÁÄ»Êä³ö£»±ê×¼´íÎóÊä³ö(stderr)ĬÈÏÒ²ÊÇÊä³öµ½ÆÁÄ»£¨ÉÏÃæµÄ std ±íʾ standard£©¡£ÔÚ BASH ÖÐʹÓÃÕâЩ¸ÅÄîʱһ°ã½«±ê×¼Êä³ö±íʾΪ 1£¬½«±ê×¼´íÎóÊä³ö±íʾΪ 2¡£ÏÂÃæÎÒÃǾÙÀýÀ´ËµÃ÷ÈçºÎʹÓÃËûÃÇ£¬ÌرðÊDZê×¼Êä³öºÍ±ê×¼´íÎóÊä³ö¡£

ÊäÈë¡¢Êä³ö¼°±ê×¼´íÎóÊä³öÖ÷ÒªÓÃÓÚ I/O µÄÖØ¶¨Ïò£¬¾ÍÊÇ˵ÐèÒª¸Ä±äËûÃǵÄĬÈÏÉèÖá£ÏÈ¿´Õâ¸öÀý×Ó£º

$ ls > ls_result
$ ls -l >> ls_result

ÉÏÃæÕâÁ½¸öÃüÁî·Ö±ð½« ls ÃüÁîµÄ½á¹ûÊä³öÖØ¶¨Ïòµ½ ls_result ÎļþÖкÍ×·¼Óµ½ ls_result ÎļþÖУ¬¶ø²»ÊÇÊä³öµ½ÆÁÄ»ÉÏ¡£">"¾ÍÊÇÊä³ö£¨±ê×¼Êä³öºÍ±ê×¼´íÎóÊä³ö£©Öض¨ÏòµÄ´ú±í·ûºÅ£¬Á¬ÐøÁ½¸ö ">" ·ûºÅ£¬¼´ ">>" Ôò±íʾ²»Çå³ýÔ­À´µÄ¶ø×·¼ÓÊä³ö¡£ÏÂÃæÔÙÀ´¿´Ò»¸öÉÔ΢¸´ÔÓµÄÀý×Ó£º

$ find /home -name lost* 2> err_result

Õâ¸öÃüÁîÔÚ ">" ·ûºÅ֮ǰ¶àÁËÒ»¸ö "2"£¬"2>" ±íʾ½«±ê×¼´íÎóÊä³öÖØ¶¨Ïò¡£ÓÉÓÚ /home Ŀ¼ÏÂÓÐЩĿ¼ÓÉÓÚȨÏÞÏÞÖÆ²»ÄÜ·ÃÎÊ£¬Òò´Ë»á²úÉúһЩ±ê×¼´íÎóÊä³ö±»´æ·ÅÔÚ err_result ÎļþÖС£´ó¼Ò¿ÉÒÔÉèÏëһϠfind /home -name lost* 2>>err_result ÃüÁî»á²úÉúʲô½á¹û£¿

Èç¹ûÖ±½ÓÖ´ÐÐ find /home -name lost* > all_result £¬Æä½á¹ûÊÇÖ»Óбê×¼Êä³ö±»´æÈë all_result ÎļþÖУ¬ÒªÏëÈñê×¼´íÎóÊä³öºÍ±ê×¼ÊäÈëÒ»Ñù¶¼±»´æÈëµ½ÎļþÖУ¬ÄǸÃÔõô°ìÄØ£¿¿´ÏÂÃæÕâ¸öÀý×Ó£º

$ find /home -name lost* > all_result 2>& 1

ÉÏÃæÕâ¸öÀý×ÓÖн«Ê×ÏȽ«±ê×¼´íÎóÊä³öÒ²ÖØ¶¨Ïòµ½±ê×¼Êä³öÖУ¬ÔÙ½«±ê×¼Êä³öÖØ¶¨Ïòµ½ all_result Õâ¸öÎļþÖС£ÕâÑùÎÒÃǾͿÉÒÔ½«ËùÓеÄÊä³ö¶¼´æ´¢µ½ÎļþÖÐÁË¡£ÎªÊµÏÖÉÏÊö¹¦ÄÜ£¬»¹ÓÐÒ»ÖÖ¼ò±ãµÄд·¨ÈçÏ£º

$ find /home -name lost* >& all_result

Èç¹ûÄÇЩ³ö´íÐÅÏ¢²¢²»ÖØÒª£¬ÏÂÃæÕâ¸öÃüÁî¿ÉÒÔÈÃÄã±Ü¿ªÖÚ¶àÎÞÓóö´íÐÅÏ¢µÄ¸ÉÈÅ£º

$ find /home -name lost* 2> /dev/null

ͬѧÃÇ»ØÈ¥ºó»¹¿ÉÒÔÔÙÊÔÑéÒ»ÏÂÈçϼ¸ÖÖÖØ¶¨Ïò·½Ê½£¬¿´¿´»á³öʲô½á¹û£¬ÎªÊ²Ã´£¿

$ find /home -name lost* > all_result 1>& 2
$ find /home -name lost* 2> all_result 1>& 2
$ find /home -name lost* 2>& 1 > all_result

ÁíÍâÒ»¸ö·Ç³£ÓÐÓõÄÖØ¶¨Ïò²Ù×÷·ûÊÇ "-"£¬Çë¿´ÏÂÃæÕâ¸öÀý×Ó£º

$ (cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xvfp -)

¸ÃÃüÁî±íʾ°Ñ /source/directory Ŀ¼ÏµÄËùÓÐÎļþͨ¹ýѹËõºÍ½âѹ£¬¿ìËÙµÄÈ«²¿Òƶ¯µ½ /dest/directory Ŀ¼ÏÂÈ¥£¬Õâ¸öÃüÁîÔÚ /source/directory ºÍ /dest/directory ²»´¦ÔÚͬһ¸öÎļþϵͳÏÂʱ½«ÏÔʾ³öÌØ±ðµÄÓÅÊÆ¡£

ÏÂÃæ»¹¼¸ÖÖ²»³£¼ûµÄÓ÷¨£º

n<&- ±íʾ½« n ºÅÊäÈë¹Ø±Õ
<&- ±íʾ¹Ø±Õ±ê×¼ÊäÈ루¼üÅÌ£©
n>&- ±íʾ½« n ºÅÊä³ö¹Ø±Õ
>&- ±íʾ½«±ê×¼Êä³ö¹Ø±Õ



[Ŀ¼]

--------------------------------------------------------------------------------


Á÷³Ì¿ØÖÆ

BASH ÖеĻù±¾Á÷³Ì¿ØÖÆÓï·¨
BASH Öм¸ºõº¬ÓÐ C ÓïÑÔÖг£ÓõÄËùÓпØÖƽṹ£¬ÈçÌõ¼þ·ÖÖ§¡¢Ñ­»·µÈ£¬ÏÂÃæÖðÒ»½éÉÜ¡£
if...then...else
if Óï¾äÓÃÓÚÅжϺͷÖÖ§£¬ÆäÓï·¨¹æÔòºÍ C ÓïÑ﵀ if ·Ç³£ÏàËÆ¡£Æä¼¸ÖÖ»ù±¾½á¹¹Îª£º

if [ expression ]
then
¡¡¡¡statments
fi

»òÕß

if [ expression ]
then
¡¡¡¡statments
else
¡¡¡¡statments
fi

»òÕß

if [ expression ]
then
¡¡¡¡statments
else if [ expression ]
¡¡¡¡then
¡¡¡¡¡¡¡¡statments
¡¡¡¡else
¡¡¡¡¡¡¡¡statments
fi

»òÕß

if [ expression ]
then
¡¡¡¡statments
elif [ expression ]
¡¡¡¡then
¡¡¡¡¡¡¡¡statments
¡¡¡¡else
¡¡¡¡¡¡¡¡statments
fi

ÖµµÃ˵Ã÷µÄÊÇÈç¹ûÄ㽫 if ºÍ then ¼ò½àµÄдÔÚÒ»ÐÐÀïÃæ£¬¾Í±ØÐëÔÚ then Ç°Ãæ¼ÓÉϷֺţ¬È磺if [ expression ]; thenÏÂÃæÕâ¸öÀý×Ó˵Ã÷ÁËÈçºÎʹÓà if Ìõ¼þÅжÏÓï¾ä£º

#!/bin/bash

if [ $1 -gt 90 ]
then
¡¡¡¡echo "Good, $1"
elif [ $1 -gt 70 ]
¡¡¡¡then
¡¡¡¡¡¡¡¡echo "OK, $1"
¡¡¡¡else
¡¡¡¡¡¡¡¡echo "Bad, $1"
fi

exit 0

ÉÏÃæÀý×ÓÖÐµÄ $1 ÊÇÖ¸ÃüÁîÐеĵÚÒ»¸ö²ÎÊý£¬Õâ¸ö»áÔÚºóÃæµÄ¡°BASH ÖеÄÌØÊâ±£Áô×Ö¡±Öн²½â¡£

for
for Ñ­»·½á¹¹Óë C ÓïÑÔÖÐÓÐËù²»Í¬£¬ÔÚ BASH ÖÐ for Ñ­»·µÄ»ù±¾½á¹¹ÊÇ£º

for $var in [list]
do
¡¡¡¡statments
done

ÆäÖÐ $var ÊÇÑ­»·¿ØÖƱäÁ¿£¬[list] ÊÇ $var ÐèÒª±éÀúµÄÒ»¸ö¼¯ºÏ£¬do/done ¶Ô°üº¬ÁËÑ­»·Ì壬Ï൱ÓÚ C ÓïÑÔÖеÄÒ»¶Ô´óÀ¨ºÅ¡£ÁíÍâÈç¹ûdo ºÍ for ±»Ð´ÔÚͬһÐУ¬±ØÐëÔÚ do Ç°Ãæ¼ÓÉÏ ";"¡£È磺 for $var in [list]; do ¡£ÏÂÃæÊÇÒ»¸öÔËÓà for ½øÐÐÑ­»·µÄÀý×Ó£º

#!/bin/bash

for day in Sun Mon Tue Wed Thu Fri Sat
do
¡¡¡¡echo $day
done

# Èç¹ûÁÐ±í±»°üº¬ÔÚÒ»¶ÔË«ÒýºÅÖУ¬Ôò±»ÈÏΪÊÇÒ»¸öÔªËØ
for day in "Sun Mon Tue Wed Thu Fri Sat"
do
¡¡¡¡echo $day
done

exit 0

×¢ÒâÉÏÃæµÄÀý×ÓÖУ¬ÔÚ for ËùÔÚÄÇÐеıäÁ¿ day ÊÇûÓÐ¼Ó "$" ·ûºÅµÄ£¬¶øÔÚÑ­»·ÌåÄÚ£¬echo ËùÔÚÐбäÁ¿ $day ÊDZØÐë¼ÓÉÏ "$" ·ûºÅµÄ¡£ÁíÍâÈç¹ûд³É for day ¶øÃ»ÓкóÃæµÄ in [list] ²¿·Ö£¬Ôò day ½«È¡±éÃüÁîÐеÄËùÓвÎÊý¡£ÈçÕâ¸ö³ÌÐò£º

#!/bin/bash

for param
do
¡¡¡¡echo $param
done

exit 0

ÉÏÃæÕâ¸ö³ÌÐò½«ÁгöËùÓÐÃüÁîÐвÎÊý¡£for Ñ­»·½á¹¹µÄÑ­»·Ìå±»°üº¬ÔÚ do/done ¶ÔÖУ¬ÕâÒ²ÊǺóÃæµÄ while¡¢until Ñ­»·Ëù¾ßÓеÄÌØµã¡£

while
while Ñ­»·µÄ»ù±¾½á¹¹ÊÇ£º

while [ condition ]
do
¡¡¡¡statments
done

Õâ¸ö½á¹¹Çë´ó¼Ò×Ô¼º±àдһ¸öÀý×ÓÀ´ÑéÖ¤¡£

until
until Ñ­»·µÄ»ù±¾½á¹¹ÊÇ£º

until [ condition is TRUE ]
do
¡¡¡¡statments
done

Õâ¸ö½á¹¹Ò²Çë´ó¼Ò×Ô¼º±àдһ¸öÀý×ÓÀ´ÑéÖ¤¡£

case
BASH ÖÐµÄ case ½á¹¹Óë C ÓïÑÔÖÐµÄ switch Óï¾äµÄ¹¦ÄܱȽÏÀàËÆ£¬¿ÉÒÔÓÃÓÚ½øÐжàÏî·ÖÖ§¿ØÖÆ¡£Æä»ù±¾½á¹¹ÊÇ£º

case "$var" in
¡¡condition1 )
¡¡¡¡statments1;;
¡¡condition2 )
¡¡¡¡statments2;;
¡¡...
¡¡* )
¡¡¡¡default statments;;
esac

ÏÂÃæÕâ¸ö³ÌÐòÊÇÔËÓà case ½á¹¹½øÐзÖÖ§Ö´ÐеÄÀý×Ó£º

#!/bin/bash

echo "Hit a key, then hit return."
read Keypress

case "$Keypress" in
¡¡[a-z] ) echo "Lowercase letter";;
¡¡[A-Z] ) echo "Uppercase letter";;
¡¡[0-9] ) echo "Digit";;
¡¡* ) echo "Punctuation, whitespace, or other";;
esac

exit 0

ÉÏÃæÀý×ÓÖеĵÚËÄÐÐ "read Keypress" Ò»¾äÖÐµÄ read Óï¾ä±íʾ´Ó¼üÅÌÉ϶ÁÈ¡ÊäÈë¡£Õâ¸öÃüÁÔÚ±¾½²ÒåµÄ BASH µÄÆäËû¸ß¼¶ÎÊÌâÖн²½â¡£

break/continue
ÊìϤ C ÓïÑÔ±à³ÌµÄ¶¼ºÜÊìϤ break Óï¾äºÍ continue Óï¾ä¡£BASH ÖÐͬÑùÓÐÕâÁ½ÌõÓï¾ä£¬¶øÇÒ×÷ÓúÍÓ÷¨Ò²ºÍ C ÓïÑÔÖÐÏàͬ£¬break Óï¾ä¿ÉÒÔÈóÌÐòÁ÷³Ì´Óµ±Ç°Ñ­»·ÌåÖÐÍêÈ«Ìø³ö£¬¶ø continue Óï¾ä¿ÉÒÔÌø¹ýµ±´ÎÑ­»·µÄÊ£Óಿ·Ö²¢Ö±½Ó½øÈëÏÂÒ»´ÎÑ­»·¡£



[Ŀ¼]

--------------------------------------------------------------------------------


º¯Êý

º¯ÊýµÄʹÓÃ
BASH ÊÇÒ»¸öÏà¶Ô¼òµ¥µÄ½Å±¾ÓïÑÔ£¬²»¹ýΪÁË·½±ã½á¹¹»¯µÄÉè¼Æ£¬BASH ÖÐÒ²ÌṩÁ˺¯Êý¶¨ÒåµÄ¹¦ÄÜ¡£BASH Öеĺ¯Êý¶¨ÒåºÜ¼òµ¥£¬Ö»ÒªÏòÏÂÃæÕâÑùд¾Í¿ÉÒÔÁË£º
function my_funcname {
¡¡code block
}

»òÕß

my_funcname() {
¡¡code block
}

ÉÏÃæµÄµÚ¶þÖÖд·¨¸ü½Ó½üÓÚ C ÓïÑÔÖеÄд·¨¡£BASH ÖÐÒªÇóº¯ÊýµÄ¶¨Ò屨ÐëÔÚº¯ÊýʹÓÃ֮ǰ£¬ÕâÊÇºÍ C ÓïÑÔÓÃÍ·Îļþ˵Ã÷º¯Êý·½·¨µÄ²»Í¬¡£

¸ü½øÒ»²½µÄÎÊÌâÊÇÈçºÎ¸øº¯Êý´«µÝ²ÎÊýºÍ»ñµÃ·µ»ØÖµ¡£BASH Öк¯Êý²ÎÊýµÄ¶¨Òå²¢²»ÐèÒªÔÚº¯Êý¶¨Òå´¦¾ÍÖÆ¶¨£¬¶øÖ»ÐèÒªÔÚº¯Êý±»µ÷ÓÃʱÓà BASH µÄ±£Áô±äÁ¿ $1 $2 ... À´ÒýÓþͿÉÒÔÁË£»BASH µÄ·µ»ØÖµ¿ÉÒÔÓà return Óï¾äÀ´Ö¸¶¨·µ»ØÒ»¸öÌØ¶¨µÄÕûÊý£¬Èç¹ûûÓÐ return Óï¾äÏÔʽµÄ·µ»ØÒ»¸ö·µ»ØÖµ£¬Ôò·µ»ØÖµ¾ÍÊǸú¯Êý×îºóÒ»ÌõÓï¾äÖ´ÐеĽá¹û£¨Ò»°ãΪ 0£¬Èç¹ûÖ´ÐÐʧ°Ü·µ»Ø´íÎóÂ룩¡£º¯ÊýµÄ·µ»ØÖµÔÚµ÷Óøú¯ÊýµÄ³ÌÐòÌåÖÐͨ¹ý $? ±£Áô×ÖÀ´»ñµÃ¡£ÏÂÃæÎÒÃǾÍÀ´¿´Ò»¸öÓú¯ÊýÀ´¼ÆËãÕûÊýƽ·½µÄÀý×Ó£º

#!/bin/bash

square() {
¡¡let "res = $1 * $1"
¡¡return $res
}

square $1
result=$?
echo $result

exit 0



[Ŀ¼]

--------------------------------------------------------------------------------


bash¿ì½Ý¼ü

¹ØÓÚbashÔÚ¿ØÖÆÌ¨ÏµĿì½Ý¼ü
ctrl+u ɾ³ý¹â±êÒÔǰµÄËùÓÐ×Ö·û
ctrl+d ɾ³ý¹â±êÒÔǰµÄÒ»¸ö×Ö·û
ctrl+k ɾ³ý¹â±êÒÔºóµÄËùÓÐ×Ö·û
ctrl+h ɾ³ý¹â±êÒÔºóµÄÒ»¸ö×Ö·û
ctrl+t µ÷»»¹â±êǰÁ½¸ö×Ö·ûµÄ´ÎÐò
ctrl+a ÒÆ¶¯¹â±êµ½×îÇ°Ãæ
ctrl+e ÒÆ¶¯¹â±êµ½×îºóÃæ
ctrl+p ÉÏÒ»¸öÃüÁî
ctrl+n ÏÂÒ»¸öÃüÁî
ctrl+s Ëø¶¨ÊäÈë
ctrl+q ½â³ýËø¶¨
ctrl+f ÒÆ¶¯¹â±êµ½ºóÒ»¸ö×Ö·û
ctrl+b ÒÆ¶¯¹â±êµ½Ç°Ò»¸ö×Ö·û
ctrl+x ±ê¼ÇÒ»¸öλÖÃ
ctrl+c Çå³ýµ±Ç°µÄÊäÈë






[Ŀ¼]

--------------------------------------------------------------------------------


gawk

awkÊÇÒ»ÖÖ³ÌÐòÓïÑÔ£¬¶ÔÎĵµ×ÊÁϵĴ¦Àí¾ßÓкÜÇ¿µÄ¹¦ÄÜ¡£awkÃû³ÆÊÇÓÉËüÈý¸ö×î³õÉè¼ÆÕßµÄÐÕÊϵĵÚÒ»¸ö×Öĸ¶øÃüÃûµÄ£ºAlfredV.Aho¡¢PeterJ.Weinberger¡¢BrianW.Kernighan¡£
awk ×î³õÔÚ1977ÄêÍê³É¡£1985Äê·¢±íÁËÒ»¸öа汾µÄawk£¬ËüµÄ¹¦ÄܱȾɰ汾ÔöÇ¿Á˲»ÉÙ¡£awkÄܹ»Óú̵ܶijÌÐò¶ÔÎĵµÀïµÄ×ÊÁÏ×öÐ޸ġ¢±È½Ï¡¢ÌáÈ¡¡¢´òÓ¡µÈ´¦Àí¡£Èç¹ûʹÓÃC»òPascalµÈÓïÑÔ´úÂë±àдÍê³ÉÉÏÊöµÄÈÎÎñ»áÊ®·Ö²»·½±ã¶øÇҺܻ¨·Ñʱ¼ä£¬ËùдµÄ³ÌÐòÒ²»áºÜ´ó¡£
awk²»½ö½öÊÇÒ»¸ö±à³ÌÓïÑÔ£¬Ëü»¹ÊÇlinuxϵͳ¹ÜÀíÔ±ºÍ³ÌÐòÔ±µÄÒ»¸ö²»¿ÉȱÉٵŤ¾ß¡£
awkÓïÑÔ±¾ÉíÊ®·ÖºÃѧ£¬Ò×ÓÚÕÆÎÕ£¬²¢ÇÒÌØ±ðµÄÁé»î¡£
gawkÊÇGNU¼Æ»®ÏÂËù×öµÄawk£¬gawk×î³õÔÚ1986ÄêÍê³É£¬Ö®ºó²»¶ÏµØ±»¸Ä½ø¡¢¸üС£gawk°üº¬awkµÄËùÓй¦ÄÜ¡£
»ù±¾ÉÏÓÐÁ½ÖÖ·½·¨¿ÉÒÔÖ´ÐÐgawk³ÌÐò¡£
Èç¹ûgawk³ÌÐòºÜ¶Ì£¬Ôò¿ÉÒÔ½«gawkÖ±½ÓдÔÚÃüÁîÐУ¬ÈçÏÂËùʾ£º
gawk'program'input-file1input-file2...
ÆäÖÐprogram°üÀ¨Ò»Ð©patternºÍaction¡£

Èç¹ûgawk³ÌÐò½Ï³¤£¬½ÏΪ·½±ãµÄ×ö·¨Êǽ«gawk³ÌÐò´æÔÚÒ»¸öÎļþÖУ¬gawkµÄ¸ñʽÈçÏÂËùʾ£º
gawk-fprogram-fileinput-file1input-file2...
gawk³ÌÐòµÄÎļþ²»Ö¹Ò»¸öʱ£¬Ö´ÐÐgawkµÄ¸ñʽÈçÏÂËùʾ£º
gawk-fprogram-file1-fprogram-file2...input-file1input-file2...


[Ŀ¼]

--------------------------------------------------------------------------------


Îļþ¡¢¼Ç¼ºÍ×Ö¶Î

Ò»°ãÇé¿öÏ£¬gawk¿ÉÒÔ´¦ÀíÎļþÖеÄÊýÖµÊý¾Ý£¬µ«Ò²¿ÉÒÔ´¦Àí×Ö·û´®ÐÅÏ¢¡£Èç¹ûÊý¾ÝûÓд洢ÔÚÎļþÖУ¬¿ÉÒÔͨ¹ý¹ÜµÀÃüÁîºÍÆäËûµÄÖØ¶¨Ïò·½·¨¸øgawkÌṩÊäÈë¡£µ±È»£¬gawkÖ»ÄÜ´¦ÀíÎı¾Îļþ£¨ASCIIÂëÎļþ£©¡£µç»°ºÅÂë±¾¾ÍÊÇÒ»¸ögawk¿ÉÒÔ´¦ÀíµÄÎļþµÄ¼òµ¥Àý×Ó¡£µç»°ºÅÂë±¾ÓɺܶàÌõÄ¿×é³É£¬Ã¿Ò»¸öÌõÄ¿¶¼ÓÐͬÑùµÄ¸ñʽ£ºÐÕ¡¢Ãû¡¢µØÖ·¡¢µç»°ºÅÂ롣ÿһ¸öÌõÄ¿¶¼Êǰ´×Öĸ˳ÐòÅÅÁС£
ÔÚgawkÖУ¬Ã¿Ò»¸öÕâÑùµÄÌõÄ¿½Ð×öÒ»¸ö¼Ç¼¡£ËüÊÇÒ»¸öÍêÕûµÄÊý¾ÝµÄ¼¯ºÏ¡£ÀýÈ磬µç»°ºÅÂë±¾ÖеÄSmithJohnÕâ¸öÌõÄ¿£¬°üÀ¨ËûµÄµØÖ·ºÍµç»°ºÅÂ룬¾ÍÊÇÒ»Ìõ¼Ç¼¡£¼Ç¼ÖеÄÿһÏî½Ð×öÒ»¸ö×ֶΡ£ÔÚgawkÖУ¬×Ö¶ÎÊÇ×î»ù±¾µÄµ¥Î»¡£¶à¸ö¼Ç¼µÄ¼¯ºÏ×é³ÉÁËÒ»¸öÎļþ¡£´ó¶àÊýÇé¿öÏ£¬×Ö¶ÎÖ®¼äÓÉÒ»¸öÌØÊâµÄ×Ö·û·Ö¿ª£¬Ïñ¿Õ¸ñ¡¢TAB¡¢·ÖºÅµÈ¡£ÕâЩ×Ö·û½Ð×ö×ֶηָô·û¡£Çë¿´ÏÂÃæÕâ¸ö /etc/passwdÎļþ£º

tparker;t36s62hsh;501;101;TimParker;/home/tparker;/bin/bash
etreijs;2ys639dj3h;502;101;EdTreijs;/home/etreijs;/bin/tcsh
ychow;1h27sj;503;101;YvonneChow;/home/ychow;/bin/bash

Äã¿ÉÒÔ¿´³ö/etc/passwdÎļþʹÓ÷ֺÅ×÷Ϊ×ֶηָô·û¡£/etc/passwdÎļþÖеÄÿһÐж¼°üÀ¨Æß¸ö×ֶΣºÓû§Ãû£»¿ÚÁÓû§ID£»¹¤×÷×é ID£»×¢ÊÍ£»homeĿ¼£»ÆôʼµÄÍâ¿Ç¡£Èç¹ûÄãÏëÒª²éÕÒµÚÁù¸ö×ֶΣ¬Ö»ÐèÊý¹ýÎå¸ö·ÖºÅ¼´¿É¡£µ«¿¼Âǵ½ÒÔϵ绰ºÅÂë±¾µÄÀý×Ó£¬Äã¾Í»á·¢ÏÖһЩÎÊÌ⣺

SmithJohn13WilsonSt.555-1283
SmithJohn2736ArtsideDrApt123555-2736
SmithJohn125WestmountCr555-1726

ËäÈ»ÎÒÃÇÄܹ»·Ö±æ³öÿ¸ö¼Ç¼°üÀ¨Ëĸö×ֶΣ¬µ«gawkÈ´ÎÞÄÜΪÁ¦¡£µç»°ºÅÂ뱾ʹÓÿոñ×÷Ϊ·Ö¸ô·û£¬ËùÒÔgawkÈÏΪSmithÊǵÚÒ»¸ö×ֶΣ¬JohnÊǵڶþ¸ö×ֶΣ¬13ÊǵÚÈý¸ö×ֶΣ¬ÒÀ´ÎÀàÍÆ¡£¾Ígawk¶øÑÔ£¬Èç¹ûÓÿոñ×÷Ϊ×ֶηָô·ûµÄ»°£¬ÔòµÚÒ»¸ö¼Ç¼ÓÐÁù¸ö×ֶΣ¬¶øµÚ¶þ¸ö¼Ç¼Óа˸ö×ֶΡ£ËùÒÔ£¬ÎÒÃDZØÐëÕÒ³öÒ»¸ö¸üºÃµÄ×ֶηָô·û¡£ÀýÈ磬ÏñÏÂÃæÒ»ÑùʹÓÃб¸Ü×÷Ϊ×ֶηָô·û£º

Smith/John/13WilsonSt./555-1283
Smith/John/2736ArtsideDr/Apt/123/555-2736
Smith/John/125WestmountCr/555-1726

Èç¹ûÄãûÓÐÖ¸¶¨ÆäËûµÄ×Ö·û×÷Ϊ×ֶηָô·û£¬ÄÇôgawk½«È±Ê¡µØÊ¹Óÿոñ»òTAB×÷Ϊ×ֶηָô·û¡£




[Ŀ¼]

--------------------------------------------------------------------------------


ģʽºÍ¶¯×÷

ÔÚgawkÓïÑÔÖÐÿһ¸öÃüÁî¶¼ÓÉÁ½²¿·Ö×é³É£ºÒ»¸öģʽ£¨pattern£©ºÍÒ»¸öÏàÓ¦µÄ¶¯×÷£¨action£©¡£Ö»ÒªÄ£Ê½·ûºÏ£¬gawk¾Í»áÖ´ÐÐÏàÓ¦µÄ¶¯×÷¡£ÆäÖÐģʽ²¿·ÖÓÃÁ½¸öб¸ÜÀ¨ÆðÀ´£¬¶ø¶¯×÷²¿·ÖÓÃÒ»¶Ô»¨À¨ºÅÀ¨ÆðÀ´¡£ÀýÈ磺
/pattern1/{action1}
/pattern2/{action2}
/pattern3/{action3}

ËùÓеÄgawk³ÌÐò¶¼ÊÇÓÉÕâÑùµÄÒ»¶Ô¶ÔµÄģʽºÍ¶¯×÷×é³ÉµÄ¡£ÆäÖÐģʽ»ò¶¯×÷¶¼Äܹ»±»Ê¡ÂÔ£¬µ«ÊÇÁ½¸ö²»ÄÜͬʱ±»Ê¡ÂÔ¡£Èç¹ûģʽ±»Ê¡ÂÔ£¬Ôò¶ÔÓÚ×÷ΪÊäÈëµÄÎļþÀïÃæµÄÿһÐУ¬¶¯×÷¶¼»á±»Ö´ÐС£Èç¹û¶¯×÷±»Ê¡ÂÔ£¬ÔòȱʡµÄ¶¯×÷±»Ö´ÐУ¬¼ÈÏÔʾ³öËùÓзûºÏģʽµÄÊäÈëÐжø²»×öÈκεĸ͝¡£

ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄÀý×Ó£¬ÒòΪgawk³ÌÐòºÜ¶Ì£¬ËùÒÔ½«gawk³ÌÐòÖ±½ÓдÔÚÍâ¿ÇÃüÁîÐУº
gawk'/tparker/'/etc/passwd
´Ë³ÌÐòÔÚÉÏÃæÌáµ½µÄ/etc/passwdÎļþÖÐѰÕÒ·ûºÏtparkerģʽµÄ¼Ç¼²¢ÏÔʾ£¨´ËÀýÖÐûÓж¯×÷£¬ËùÒÔȱʡµÄ¶¯×÷±»Ö´ÐУ©¡£

ÈÃÎÒÃÇÔÙ¿´Ò»¸öÀý×Ó£º
gawk'/UNIX/{print$2}'file2.data
´ËÃüÁÖðÐвéÕÒfile2.dataÎļþÖаüº¬UNIXµÄ¼Ç¼£¬²¢´òÓ¡ÕâЩ¼Ç¼µÄµÚ¶þ¸ö×ֶΡ£

ÄãÒ²¿ÉÒÔÔÚÒ»¸öÃüÁîÖÐʹÓöà¸öģʽºÍ¶¯×÷¶Ô£¬ÀýÈ磺
gawk'/scandal/{print$1}/rumor/{print$2}'gossip_file
´ËÃüÁîËÑË÷Îļþgossip_fileÖаüÀ¨scandalµÄ¼Ç¼£¬²¢´òÓ¡µÚÒ»¸ö×ֶΡ£È»ºóÔÙ´ÓÍ·ËÑË÷gossip_fileÖаüÀ¨rumorµÄ¼Ç¼£¬²¢´òÓ¡µÚ¶þ¸ö×ֶΡ£




[Ŀ¼]

--------------------------------------------------------------------------------


ÔËËã

gawkÓкܶà±È½ÏÔËËã·û£¬ÏÂÃæÁгöÖØÒªµÄ¼¸¸ö£º
==ÏàµÈ
!=²»ÏàµÈ
>´óÓÚ
<СÓÚ
>=´óÓÚµÈÓÚ
<=СÓÚµÈÓÚ

ÀýÈ磺gawk'$4>100'testfile½«»áÏÔʾÎļþtestfileÖÐÄÇЩµÚËĸö×ֶδóÓÚ100µÄ¼Ç¼¡£

ϱíÁгöÁËgawkÖлù±¾µÄÊýÖµÔËËã·û¡£

ÔËËã·û˵Ã÷ʾÀý
+¼Ó·¨ÔËËã2+6
-¼õ·¨ÔËËã6-3
*³Ë·¨ÔËËã2*5
/³ý·¨ÔËËã8/4
^³Ë·½ÔËËã3^2(=9)
%ÇóÓàÊý9%4(=1)

ÀýÈ磺{print$3/2}ÏÔʾµÚÈý¸ö×ֶα»2³ýµÄ½á¹û¡£
ÔÚgawk ÖУ¬ÔËËã·ûµÄÓÅÏÈȨºÍÒ»°ãµÄÊýѧÔËËãµÄÓÅÏÈȨһÑù¡£ÀýÈ磺{print$1+$2*$3}ÏÔʾµÚ¶þ¸ö×ֶκ͵ÚÈý¸ö×Ö¶ÎÏà³Ë£¬È»ºóºÍµÚÒ»¸ö×Ö¶ÎÏà¼ÓµÄ½á¹û¡£ÄãÒ²¿ÉÒÔÓÃÀ¨ºÅ¸Ä±äÓÅÏÈ´ÎÐò¡£ÀýÈ磺{print($1+$2)*$3}ÏÔʾµÚÒ»¸ö×ֶκ͵ڶþ¸ö×Ö¶ÎÏà¼Ó£¬È»ºóºÍµÚÈý¸ö×Ö¶ÎÏà³ËµÄ½á¹û¡£




[Ŀ¼]

--------------------------------------------------------------------------------


ÄÚ²¿º¯Êý

gawkÖÐÓи÷ÖÖµÄÄÚ²¿º¯Êý£¬ÏÖÔÚ½éÉÜÈçÏ£º
sqrt(x)ÇóxµÄƽ·½¸ù
sin(x)ÇóxµÄÕýÏÒº¯Êý
cos(x)ÇóxµÄÓàÏÒº¯Êý
atan2(x£¬y)Çóx/yµÄÓàÇк¯Êý
log(x)ÇóxµÄ×ÔÈ»¶ÔÊý
exp(x)ÇóxµÄe´Î·½
int(x)ÇóxµÄÕûÊý²¿·Ö
rand()Çó0ºÍ1Ö®¼äµÄËæ»úÊý
srand(x)½«xÉèÖÃΪrand()µÄÖÖ×ÓÊý

index(in£¬find)ÔÚ×Ö·û´®inÖÐѰÕÒ×Ö·û´®findµÚÒ»´Î³öÏֵĵط½£¬·µ»ØÖµÊÇ×Ö·û´®find³öÏÖÔÚ×Ö·û´®inÀïÃæµÄλÖá£Èç¹ûÔÚ×Ö·û´®inÀïÃæÕÒ²»µ½×Ö·û´®find£¬Ôò·µ»ØÖµÎª0¡£
ÀýÈ磺printindex("peanut"£¬"an")
ÏÔʾ½á¹û3¡£

length(string)Çó³östringÓм¸¸ö×Ö·û¡£
ÀýÈ磺length("abcde")
ÏÔʾ½á¹û5¡£

match (string£¬regexp)ÔÚ×Ö·û´®stringÖÐѰÕÒ·ûºÏregexpµÄ×¡¢×î¿¿×ó±ßµÄ×Ó×Ö·û´®¡£·µ»ØÖµÊÇregexpÔÚstringµÄ¿ªÊ¼Î»Ö㬼´indexÖµ¡£matchº¯Êý½«»áÉèÖÃϵͳ±äÁ¿RSTARTµÈÓÚindexµÄÖµ£¬ÏµÍ³±äÁ¿RLENGTHµÈÓÚ·ûºÏµÄ×Ö·û¸öÊý¡£Èç¹û²»·ûºÏ£¬Ôò»áÉèÖà RSTARTΪ0¡¢RLENGTHΪ-1¡£
sprintf(format£¬expression1£¬...)ºÍprintfÀàËÆ£¬µ«ÊÇsprintf²¢²»ÏÔʾ£¬¶øÊÇ·µ»Ø×Ö·û´®¡£
ÀýÈ磺sprintf("pi=%.2f(approx.)"£¬22/7)
·µ»ØµÄ×Ö·û´®Îªpi=3.14(approx.)

sub(regexp£¬replacement£¬target)ÔÚ×Ö·û´®targetÖÐѰÕÒ·ûºÏregexpµÄ×¡¢×î¿¿×óµÄµØ·½£¬ÒÔ×Ö´®replacement´úÌæ×î×ó±ßµÄregexp¡£
ÀýÈ磺
str="water£¬water£¬everywhere"
sub(/at/£¬"ith"£¬str)
½á¹û×Ö·û´®str»á±ä³É
wither£¬water£¬everywhere

gsub(regexp£¬replacement£¬target)ÓëÇ°ÃæµÄsubÀàËÆ¡£ÔÚ×Ö·û´®targetÖÐѰÕÒ·ûºÏregexpµÄËùÓеط½£¬ÒÔ×Ö·û´®replacement´úÌæËùÓеÄregexp¡£
ÀýÈ磺str="water£¬water£¬everywhere"
gsub(/at/£¬"ith"£¬str)
½á¹û×Ö·û´®str»á±ä³É
wither£¬wither£¬everywhere

substr(string£¬start£¬length)·µ»Ø×Ö·û´®stringµÄ×Ó×Ö·û´®£¬Õâ¸ö×Ó×Ö·û´®µÄ³¤¶ÈΪlength£¬´ÓµÚstart¸öλÖÿªÊ¼¡£
ÀýÈ磺substr("washington"£¬5£¬3)·µ»ØÖµÎªingÈç¹ûûÓÐlength£¬Ôò·µ»ØµÄ×Ó×Ö·û´®ÊÇ´ÓµÚstart¸öλÖÿªÊ¼ÖÁ½áÊø¡£
ÀýÈ磺substr("washington"£¬5)
·µ»ØÖµÎªington¡£

tolower(string)½«×Ö·û´®stringµÄ´óд×Öĸ¸ÄΪСд×Öĸ¡£
ÀýÈ磺tolower("MiXeDcAsE123")
·µ»ØÖµÎªmixedcase123¡£

toupper(string)½«×Ö·û´®stringµÄСд×Öĸ¸ÄΪ´óд×Öĸ¡£
ÀýÈ磺toupper("MiXeDcAsE123")
·µ»ØÖµÎªMIXEDCASE123¡£

ÊäÈëÊä³öµÄÄÚ²¿º¯Êý
close(filename)½«ÊäÈë»òÊä³öµÄÎļþfilename¹Ø±Õ¡£
system(command)´Ëº¯ÊýÔÊÐíÓû§Ö´ÐвÙ×÷ϵͳµÄÖ¸ÁִÐÐÍê±Ïºó½«»Øµ½gawk³ÌÐò¡£
ÀýÈ磺BEGIN{system("ls")}



[Ŀ¼]

--------------------------------------------------------------------------------


×Ö·û´®ºÍÊý×Ö

×Ö·û´®¾ÍÊÇÒ»Á¬´®µÄ×Ö·û£¬Ëü¿ÉÒÔ±»gawkÖð×ֵط­Òë¡£×Ö·û´®ÓÃË«ÒýºÅÀ¨ÆðÀ´¡£Êý×Ö²»ÄÜÓÃË«ÒýºÅÀ¨ÆðÀ´£¬²¢ÇÒgawk½«Ëüµ±×÷Ò»¸öÊýÖµ¡£
ÀýÈ磺gawk'$1!="Tim"{print}'testfile
´ËÃüÁÏÔʾµÚÒ»¸ö×ֶκÍTim²»ÏàͬµÄËùÓмǼ¡£Èç¹ûÃüÁîÖÐTimÁ½±ß²»ÓÃË«ÒýºÅ£¬gawk½«²»ÄÜÕýÈ·Ö´ÐС£
ÔÙÈ磺gawk'$1=="50"{print}'testfile
´ËÃüÁÏÔʾËùÓеÚÒ»¸ö×ֶκÍ50Õâ¸ö×Ö·û´®ÏàͬµÄ¼Ç¼¡£gawk²»¹ÜµÚÒ»×Ö¶ÎÖеÄÊýÖµµÄ´óС£¬¶øÖ»ÊÇÖð×ֵرȽϡ£Õâʱ£¬×Ö·û´®50ºÍÊýÖµ50²¢²»ÏàµÈ¡£
ÎÒÃÇ¿ÉÒÔÈö¯×÷ÏÔʾһЩ±È½Ï¸´ÔӵĽá¹û¡£ÀýÈ磺
gawk'$1!="Tim"{print$1£¬$5£¬$6£¬$2}'testfile

ÄãÒ²¿ÉÒÔʹÓÃһЩ»»Âë¿ØÖÆ·û¸ñʽ»¯ÕûÐеÄÊä³ö¡£Ö®ËùÒÔ½Ð×ö»»Âë¿ØÖÆ·û£¬ÊÇÒòΪgawk¶ÔÕâЩ·ûºÅÓÐÌØÊâµÄ½âÊÍ¡£ÏÂÃæÁгö³£ÓõĻ»Âë¿ØÖÆ·û£º

a¾¯¸æ»òÏìÁå×Ö·û¡£
ºóÍËÒ»¸ñ¡£
f»»Ò³¡£
»»ÐС£
»Ø³µ¡£
Tab¡£
v´¹Ö±µÄtab¡£

ÔÚgawkÖУ¬È±Ê¡µÄ×ֶηָô·ûÒ»°ãÊǿոñ·û»òTAB¡£µ«Äã¿ÉÒÔÔÚÃüÁîÐÐʹÓÃ-FÑ¡Ïî¸Ä±ä×Ö·û·Ö¸ô·û£¬Ö»ÐèÔÚ-FºóÃæ¸ú×ÅÄãÏëÓõķָô·û¼´¿É¡£
gawk-F";"'/tparker/{print}'/etc/passwd
ÔÚ´ËÀýÖУ¬Ä㽫×Ö·û·Ö¸ô·ûÉèÖóɷֺš£×¢Ò⣺-F±ØÐëÊÇ´óдµÄ£¬¶øÇÒ±ØÐëÔÚµÚÒ»¸öÒýºÅ֮ǰ¡£




[Ŀ¼]

--------------------------------------------------------------------------------


Ôª×Ö·û

gawkÓïÑÔÔÚ¸ñʽƥÅäʱÓÐÆäÌØÊâµÄ¹æÔò¡£ÀýÈ磬catÄܹ»ºÍ¼Ç¼ÖÐÈκÎλÖÃÓÐÕâÈý¸ö×Ö·ûµÄ×Ö¶ÎÆ¥Åä¡£µ«ÓÐʱÄãÐèҪһЩ¸üÎªÌØÊâµÄÆ¥Åä¡£Èç¹ûÄãÏëÈÃcatÖ»ºÍconcatenateÆ¥Å䣬ÔòÐèÒªÔÚ¸ñʽÁ½¶Ë¼ÓÉϿոñ£º
/cat/{print}
ÔÙÀýÈ磬ÄãÏ£Íû¼ÈºÍcatÓÖºÍCATÆ¥Å䣬Ôò¿ÉÒÔʹÓûò£¨|£©£º
/cat|CAT/{print}

ÔÚgawkÖУ¬Óм¸¸ö×Ö·ûÓÐÌØÊâÒâÒå¡£ÏÂÃæÁгö¿ÉÒÔÓÃÔÚgawk¸ñʽÖеÄÕâЩ×Ö·û£º

?^±íʾ×ֶεĿªÊ¼¡£
ÀýÈ磺
$3~/^b/
Èç¹ûµÚÈý¸ö×Ö¶ÎÒÔ×Ö·ûb¿ªÊ¼£¬ÔòÆ¥Åä¡£

?$±íʾ×ֶεĽáÊø¡£
ÀýÈ磺
$3~/b$/
Èç¹ûµÚÈý¸ö×Ö¶ÎÒÔ×Ö·ûb½áÊø£¬ÔòÆ¥Åä¡£

?.±íʾºÍÈκε¥×Ö·ûmÆ¥Åä¡£
ÀýÈ磺
$3~/i.m/
Èç¹ûµÚÈý¸ö×Ö¶ÎÓÐ×Ö·ûi£¬ÔòÆ¥Åä¡£

?|±íʾ¡°»ò¡±¡£
ÀýÈ磺
/cat|CAT/
ºÍcat»òCAT×Ö·ûÆ¥Åä¡£

?*±íʾ×Ö·ûµÄÁãµ½¶à´ÎÖØ¸´¡£
ÀýÈ磺
/UNI*X/
ºÍUNX¡¢UNIX¡¢UNIIX¡¢UNIIIXµÈÆ¥Åä¡£

?+±íʾ×Ö·ûµÄÒ»´Îµ½¶à´ÎÖØ¸´¡£
ÀýÈ磺
/UNI+X/
ºÍUNIX¡¢UNIIXµÈÆ¥Åä¡£

?{a£¬b}±íʾ×Ö·ûa´Îµ½b´ÎÖ®¼äµÄÖØ¸´¡£
ÀýÈ磺
/UNI{1£¬3}X
ºÍUNIX¡¢UNIIXºÍUNIIIXÆ¥Åä¡£

??±íʾ×Ö·ûÁã´ÎºÍÒ»´ÎµÄÖØ¸´¡£
ÀýÈ磺
/UNI?X/
ºÍUNXºÍUNIXÆ¥Åä¡£

?[]±íʾ×Ö·ûµÄ·¶Î§¡£
ÀýÈ磺
/I[BDG]M/
ºÍIBM¡¢IDMºÍIGMÆ¥Åä

?[^]±íʾ²»ÔÚ[]ÖеÄ×Ö·û¡£
ÀýÈ磺
/I[^DE]M/
ºÍËùÓеÄÒÔI¿ªÊ¼¡¢M½áÊøµÄ°üÀ¨Èý¸ö×Ö·ûµÄ×Ö·û´®Æ¥Å䣬³ýÁËIDMºÍIEMÖ®Íâ¡£




[Ŀ¼]

--------------------------------------------------------------------------------


µ÷ÓÃgawk³ÌÐò

µ±ÐèÒªºÜ¶à¶ÔģʽºÍ¶¯×÷ʱ£¬Äã¿ÉÒÔ±àдһ¸ögawk³ÌÐò£¨Ò²½Ð×ögawk½Å±¾£©¡£ÔÚgawk³ÌÐòÖУ¬Äã¿ÉÒÔÊ¡ÂÔģʽºÍ¶¯×÷Á½±ßµÄÒýºÅ£¬ÒòΪÔÚgawk³ÌÐòÖУ¬Ä£Ê½ºÍ¶¯×÷´ÓÄÄ¿ªÊ¼ºÍ´ÓÄĽáÊøÊ±ÊǺÜÏÔÈ»µÄ¡£
Äã¿ÉÒÔʹÓÃÈçÏÂÃüÁîµ÷ÓÃgawk³ÌÐò£º
gawk-fscriptfilename
´ËÃüÁîʹgawk¶ÔÎļþfilenameÖ´ÐÐÃûΪscriptµÄgawk³ÌÐò¡£

Èç¹ûÄ㲻ϣÍûʹÓÃȱʡµÄ×ֶηָô·û£¬Äã¿ÉÒÔÔÚfÑ¡ÏîºóÃæ¸ú×ÅFÑ¡ÏîÖ¸¶¨ÐµÄ×ֶηָô·û£¨µ±È»ÄãÒ²¿ÉÒÔÔÚgawk³ÌÐòÖÐÖ¸¶¨£©£¬ÀýÈ磬ʹÓ÷ֺÅ×÷Ϊ×ֶηָô·û£º
gawk-fscript-F";"filename

Èç¹ûÏ£Íûgawk³ÌÐò´¦Àí¶à¸öÎļþ£¬Ôò°Ñ¸÷¸öÎļþÃûÂÞÁÐÆäºó£º
gawk-fscriptfilename1filename2filename3...
ȱʡÇé¿öÏ£¬gawkµÄÊä³ö½«ËÍÍùÆÁÄ»¡£µ«Äã¿ÉÒÔʹÓÃlinuxµÄÖØ¶¨ÏòÃüÁîʹgawkµÄÊä³öËÍÍùÒ»¸öÎļþ£º
gawk-fscriptfilename>save_file




[Ŀ¼]

--------------------------------------------------------------------------------


BEGINºÍEND

ÓÐÁ½¸öÌØÊâµÄģʽÔÚgawkÖзdz£ÓÐÓá£BEGINģʽÓÃÀ´Ö¸Ã÷gawk¿ªÊ¼´¦ÀíÒ»¸öÎļþ֮ǰִÐÐһЩ¶¯×÷¡£BEGIN¾­³£ÓÃÀ´³õʼ»¯ÊýÖµ£¬ÉèÖòÎÊýµÈ¡£ENDģʽÓÃÀ´ÔÚÎļþ´¦ÀíÍê³ÉºóÖ´ÐÐһЩָÁһ°ãÓÃ×÷×ܽá»ò×¢ÊÍ¡£
BEGINºÍENDÖÐËùÓÐÒªÖ´ÐеÄÖ¸Áî¶¼Ó¦¸ÃÓû¨À¨ºÅÀ¨ÆðÀ´¡£BEGINºÍEND±ØÐëʹÓôóд¡£
Çë¿´ÏÂÃæµÄÀý×Ó£º

BEGIN{print"Startingtheprocessthefile"}
$1=="UNIX"{print}
$2>10{printf"Thislinehasavalueof%d"£¬$2}
END{print"Finishedprocessingthefile.Bye!"}

´Ë³ÌÐòÖУ¬ÏÈÏÔʾһÌõÐÅÏ¢£ºStartingtheprocessthefile£¬È»ºó½«ËùÓеÚÒ»¸ö×ֶεÈÓÚUNIXµÄÕûÌõ¼Ç¼ÏÔʾ³öÀ´£¬È»ºóÔÙÏÔʾµÚ¶þ¸ö×ֶδóÓÚ10µÄ¼Ç¼£¬×îºóÏÔʾÐÅÏ¢£ºFinished processingthefile.Bye!¡£




[Ŀ¼]

--------------------------------------------------------------------------------


±äÁ¿

ÔÚgawkÖУ¬¿ÉÒÔÓõȺÅ(=)¸øÒ»¸ö±äÁ¿¸³Öµ£º
var1=10
ÔÚgawkÖУ¬Äã²»±ØÊÂÏÈÉùÃ÷±äÁ¿ÀàÐÍ¡£
Çë¿´ÏÂÃæµÄÀý×Ó£º
$1=="Plastic"{count=count+1}

Èç¹ûµÚÒ»¸ö×Ö¶ÎÊÇPlastic£¬ÔòcountµÄÖµ¼Ó1¡£ÔÚ´Ë֮ǰ£¬ÎÒÃÇÓ¦µ±¸øcount¸³Óè¹ý³õÖµ£¬Ò»°ãÊÇÔÚBEGIN²¿·Ö¡£
ÏÂÃæÊDZȽÏÍêÕûµÄÀý×Ó£º

BEGIN{count=0}
$5=="UNIX"{count=count+1}
END{printf"%doccurrencesofUNIXwerefound"£¬count}

±äÁ¿¿ÉÒÔºÍ×ֶκÍÊýÖµÒ»ÆðʹÓã¬ËùÒÔ£¬ÏÂÃæµÄ±í´ïʽ¾ùΪºÏ·¨£º
count=count+$6
count=$5-8
count=$5+var1

±äÁ¿Ò²¿ÉÒÔÊǸñʽµÄÒ»²¿·Ö£¬ÀýÈ磺
$2>max_value{print"Maxvalueexceededby"£¬$2-max_value}
$4-var1

gawkÓïÑÔÖÐÓм¸¸öÊ®·ÖÓÐÓõÄÄÚÖñäÁ¿£¬ÏÖÔÚÁÐÓÚÏÂÃæ£º

NRÒѾ­¶ÁÈ¡¹ýµÄ¼Ç¼Êý¡£
FNR´Óµ±Ç°ÎļþÖжÁ³öµÄ¼Ç¼Êý¡£
FILENAMEÊäÈëÎļþµÄÃû×Ö¡£
FS×ֶηָô·û£¨È±Ê¡Îª¿Õ¸ñ£©¡£
RS¼Ç¼·Ö¸ô·û£¨È±Ê¡Îª»»ÐУ©¡£
OFMTÊý×ÖµÄÊä³ö¸ñʽ£¨È±Ê¡Îª%g£©¡£
OFSÊä³ö×ֶηָô·û¡£
ORSÊä³ö¼Ç¼·Ö¸ô·û¡£
NFµ±Ç°¼Ç¼ÖеÄ×Ö¶ÎÊý¡£

Èç¹ûÄãÖ»´¦ÀíÒ»¸öÎļþ£¬ÔòNRºÍFNRµÄÖµÊÇÒ»ÑùµÄ¡£µ«Èç¹ûÊǶà¸öÎļþ£¬NRÊǶÔËùÓеÄÎļþÀ´ËµµÄ£¬¶øFNRÔòÖ»ÊÇÕë¶Ôµ±Ç°Îļþ¶øÑÔ¡£
ÀýÈ磺
NR<=5{print"Notenoughfieldsintherecord"}
¼ì²é¼Ç¼ÊýÊÇ·ñСÓÚ5£¬Èç¹ûСÓÚ5£¬ÔòÏÔʾ³ö´íÐÅÏ¢¡£
FSÊ®·ÖÓÐÓã¬ÒòΪFS¿ØÖÆÊäÈëÎļþµÄ×ֶηָô·û¡£ÀýÈ磬ÔÚBEGIN¸ñʽÖУ¬Ê¹ÓÃÈçϵÄÃüÁ
FS=":"




[Ŀ¼]

--------------------------------------------------------------------------------


¿ØÖƽṹ

if±í´ïʽ
if±í´ïʽµÄÓï·¨ÈçÏ£º
if(expression){
commands
}
else{
commands
}
ÀýÈ磺
#asimpleifloop
(if($1==0){
print"This cell has a value of zero"
}
else{
printf"The value is %d "£¬$1
})
ÔÙ¿´ÏÂÒ»¸öÀý×Ó£º
#anicely form attedi floop
(if($1>$2){
print"The first column is larger"
}
else{
print"The second column is larger"
})
whileÑ­»·
whileÑ­»·µÄÓï·¨ÈçÏ£º
while(expression){
commands
}
ÀýÈ磺
#interest calculation computes compound interest
#inputs from a file arethea mount£¬interest_rateandyears
{var=1
while(var<=$3){
printf("%f "£¬$1*(1+$2)^var)
var++

forÑ­»·
forÑ­»·µÄÓï·¨ÈçÏ£º
for(initialization;expression;increment){
command
}
ÀýÈ磺
#interest calculation computes compound interest
#inputs from a fil earethea mount£¬interest_rateandyears
{for(var=1;var<=$3;var++){
printf("%f "£¬$1*(1+$2)^var)
}}

nextºÍexit
nextÖ¸ÁîÓÃÀ´¸æËßgawk´¦ÀíÎļþÖеÄÏÂÒ»¸ö¼Ç¼£¬¶ø²»¹ÜÏÖÔÚÕýÔÚ×öʲô¡£Óï·¨ÈçÏ£º
{command1
command2
command3
next
command4
}
³ÌÐòÖ»ÒªÖ´Ðе½nextÖ¸Á¾ÍÌøµ½ÏÂÒ»¸ö¼Ç¼´ÓÍ·Ö´ÐÐÃüÁî¡£Òò´Ë£¬±¾ÀýÖУ¬command4Ö¸ÁîÓÀÔ¶²»»á±»Ö´ÐС£
³ÌÐòÓöµ½exitÖ¸Áîºó£¬¾Íתµ½³ÌÐòµÄĩβȥִÐÐEND£¬Èç¹ûÓÐENDµÄ»°¡£




[Ŀ¼]

--------------------------------------------------------------------------------


Êý×é

gawkÓïÑÔÖ§³ÖÊý×é½á¹¹¡£Êý×é²»±ØÊÂÏȳõʼ»¯¡£ÉùÃ÷Ò»¸öÊý×éµÄ·½·¨ÈçÏ£º
arrayname[num]=value

Çë¿´ÏÂÃæµÄÀý×Ó£º

#reverse lines in a file
{line[NR]=$0} #remember each line
END{var=NR #output lines in reverse order
while(var>0){
printline[var]
var--
}

´Ë¶Î³ÌÐò¶Áȡһ¸öÎļþµÄÿһÐУ¬²¢ÓÃÏà·´µÄ˳ÐòÏÔʾ³öÀ´¡£ÎÒÃÇʹÓÃNR×÷ΪÊý×éµÄϱêÀ´´æ´¢ÎļþµÄÿһÌõ¼Ç¼£¬È»ºóÔÚ´Ó×îºóÒ»Ìõ¼Ç¼¿ªÊ¼£¬½«ÎļþÖðÌõµØÏÔʾ³öÀ´¡£




[Ŀ¼]

--------------------------------------------------------------------------------


×Ô¶¨Ò庯Êý

Óû§×Ô¶¨Ò庯Êý
¸´ÔÓµÄgawk³ÌÐò³£³£¿ÉÒÔʹÓÃ×Ô¼º¶¨ÒåµÄº¯ÊýÀ´¼ò»¯¡£µ÷ÓÃÓû§×Ô¶¨Ò庯ÊýÓëµ÷ÓÃÄÚ²¿º¯ÊýµÄ·½·¨Ò»Ñù¡£º¯ÊýµÄ¶¨Òå¿ÉÒÔ·ÅÔÚgawk³ÌÐòµÄÈκεط½¡£
Óû§×Ô¶¨Ò庯ÊýµÄ¸ñʽÈçÏ£º
functionname(parameter-list){
body-of-function
}
name ÊÇËù¶¨ÒåµÄº¯ÊýµÄÃû³Æ¡£Ò»¸öÕýÈ·µÄº¯ÊýÃû³Æ¿É°üÀ¨Ò»ÐòÁеÄ×Öĸ¡¢Êý×Ö¡¢Ï±êÏß(underscores)£¬µ«ÊDz»¿ÉÓÃÊý×Ö×ö¿ªÍ·¡£parameter- listÊǺ¯ÊýµÄÈ«²¿²ÎÊýµÄÁÐ±í£¬¸÷¸ö²ÎÊýÖ®¼äÒÔ¶ºµã¸ô¿ª¡£body-of-function°üº¬gawkµÄ±í´ïʽ£¬ËüÊǺ¯Êý¶¨ÒåÀï×îÖØÒªµÄ²¿·Ö£¬Ëü¾ö¶¨º¯Êýʵ¼ÊÒª×öµÄÊÂÇé¡£

ÏÂÃæÕâ¸öÀý×Ó£¬»á½«Ã¿¸ö¼Ç¼µÄµÚÒ»¸ö×ֶεÄÖµµÄƽ·½ÓëµÚ¶þ¸ö×ֶεÄÖµµÄƽ·½¼ÓÆðÀ´¡£

{print"sum="£¬SquareSum($1£¬$2)}
function SquareSum(x£¬y){
sum=x*x+y*y
returnsum
}





[Ŀ¼]

--------------------------------------------------------------------------------


¼¸¸öʵÀý

×îºó£¬Ôپټ¸¸ögawkµÄÀý×Ó£º
gawk'{if(NF>max)max=NF}
END{printmax}'
´Ë³ÌÐò»áÏÔʾËùÓÐÊäÈëÐÐÖ®ÖÐ×ֶεÄ×î´ó¸öÊý¡£

gawk'length($0)>80'
´Ë³ÌÐò»áÏÔʾ³ö³¬¹ý80¸ö×Ö·ûµÄÿһÐС£´Ë´¦Ö»ÓÐģʽ±»Áгö£¬¶¯×÷ÊDzÉÓÃȱʡֵÏÔʾÕû¸ö¼Ç¼¡£

gawk'NF>0'
ÏÔʾӵÓÐÖÁÉÙÒ»¸ö×ֶεÄËùÓÐÐС£ÕâÊÇÒ»¸ö¼òµ¥µÄ·½·¨£¬½«Ò»¸öÎļþÀïµÄËùÓпհ×ÐÐɾ³ý¡£

gawk'BEGIN{for(i=1;i<=7;i++)
printint(101*rand())}'
´Ë³ÌÐò»áÏÔʾ³ö·¶Î§ÊÇ0µ½100Ö®¼äµÄ7¸öËæ»úÊý¡£

ls-lfiles|gawk'{x+=$4};END{print"totalbytes:"x}'
´Ë³ÌÐò»áÏÔʾ³öËùÓÐÖ¸¶¨µÄÎļþµÄ×Ü×Ö½ÚÊý¡£

expandfile|gawk'{if(x END{print"maximumlinelengthis"x}'
´Ë³ÌÐò»á½«Ö¸¶¨ÎļþÀï×һÐеij¤¶ÈÏÔʾ³öÀ´¡£expand»á½«tab¸Ä³Éspace£¬ËùÒÔÊÇÓÃʵ¼ÊµÄÓұ߽çÀ´×ö³¤¶ÈµÄ±È½Ï¡£

gawk'BEGIN{FS=":"}
{print$1|"sort"}'/etc/passwd
´Ë³ÌÐò»á½«ËùÓÐÓû§µÄµÇ¼Ãû³Æ£¬ÒÀÕÕ×ÖĸµÄ˳ÐòÏÔʾ³öÀ´¡£

gawk'{nlines++}
END{printnlines}'
´Ë³ÌÐò»á½«Ò»¸öÎļþµÄ×ÜÐÐÊýÏÔʾ³öÀ´¡£

gawk'END{printNR}'
´Ë³ÌÐòÒ²»á½«Ò»¸öÎļþµÄ×ÜÐÐÊýÏÔʾ³öÀ´£¬µ«ÊǼÆËãÐÐÊýµÄ¹¤×÷ÓÉgawkÀ´×ö¡£

gawk'{printNR£¬$0}'
´Ë³ÌÐòÏÔʾ³öÎļþµÄÄÚÈÝʱ£¬»áÔÚÿÐеÄ×îÇ°ÃæÏÔʾ³öÐкţ¬ËüµÄº¯ÊýÓë¡®cat-n¡¯ÀàËÆ¡£




[Ŀ¼]

--------------------------------------------------------------------------------


Perl

PerlµÄ»ù±¾Ìصã
¡¡¡¡¡°±ðÆÚÍûÔÚÒ»¿ÌÖÓÄÚ¾ÍÄÜÁìÂÔPerlµÄËùÓÐÉñÆæÖ®´¦,ÕâÖÖÇé¿öºÜÏñ³ÔÏã½¶,Óò»×ųÔÍêÕûÖ»Ïã½¶ºó²ÅÖªÆäζ£¬Ã¿Ò§Ò»¿Ú¶¼ÊÇÏíÊÜ£¬²¢´ÙʹÄãÔÙÒ§ÏÂÒ»¿Ú£¬ÔÙÏÂÒ»¿Ú¡£¡±ÉÏÃæÕâ¶Î»°ÊÇPerlÏîÄ¿·¢ÆðÈËÀÍÀû?»ª¶û(LarryWall)¶ÔѧϰPerlÓïÑÔµÄÒ»¶Î¾­µäÆÀÂÛ£¬Ï£Íû´ó¼Ò¶¼ÄÜÕÒµ½ÕâÖָоõ¡£
¡¡¡¡ PerlµÄÉè¼ÆÄ¿±êÊǰïÖúUNIXÓû§Íê³ÉһЩ³£¼ûµÄÈÎÎñ£¬ÕâЩÈÎÎñ¶ÔÓÚShellÀ´Ëµ¹ýÓÚ³ÁÖØ»ò¶ÔÒÆÖ²ÐÔÒªÇó¹ýÓÚÑϸñ¡£PerlÓïÑÔÖаüº¬ÁËC¡¢C+ +¡¢shell,script¡¢sed¡¢awkÕ⼸¸öÓïÑÔµÄÓï·¨,Ëü×î³õµÄÄ¿µÄ¾ÍÊÇÓÃÀ´È¡´úUNIXÖÐsed/awkÓë½Å±¾ÓïÑÔµÄ×éºÏ,ÓÃÀ´»ãÕûÐÅÏ¢£¬²úÉú±¨±í¡£Òò´ËPerlÓïÑÔÒªÔ¶Ô¶±ÈÇ°Ãæ½²µÄBASH¸´ÔӺ͹¦ÄÜÇ¿´ó¡£PerlµÄÉè¼ÆÔ­Ôò»òÕß˵PerlµÄÉè¼ÆÕÜѧÊÇÒÔʵÓÃΪµÚÒ»ÓÅÏÈ£¬Ò²¾ÍÊÇÁ¦Í¼Ê¹ PerlÓïÑÔÈÝÒ×ʹÓá¢ÓÐЧÂÊ¡¢¶øÇÒÍêÕû¡£
¡¡¡¡PerlÊǰ´GNUPublicLicenseºÍArticticLicenseÁ½ÖÖÐí¿ÉÖ¤ÐÎʽ·Ö·¢µÄ£¬ÆäʵÖÊÊÇ¿ªÔ´Èí¼þ¡¢×ÔÓÉÈí¼þµÄ£¬Ô­ÏÈÔËÐÐÓÚUNIXºÍÀàUNIXϵͳ£¬ÏÖÔÚÒÑ¿ÉÒÔ·½±ãµØÔÚOS/2£¬Windows9x£¬Windows/NTµÈϵͳÏÂÔËÐС£PerlÊÇÒ»ÖÖ½âÊÍÔËÐеÄÓïÑÔ£¬ºÍBASH³ÌÐòÒ»Ñù£¬Ò»°ãPerl³ÌÐòµÄµÚÒ»ÐÐÐè×¢Ã÷×Ô¼ºÊÇÒ»¸öPerl³ÌÐò¶ø²»ÊÇShell³ÌÐò£¬ËùÒÔÒ»°ã½«ÏÂÃæÒ»ÐÐÓï¾ä£º
¡¡¡¡#!/usr/bin/perl¡¡¡¡×÷ΪÎļþµÄµÚÒ»ÐС£
¡¡¡¡PerlÓÉÓÚÒýÈëÁËÄ£¿éµÄÉè¼ÆË¼Ïë£¬Ëæ×Ű汾µÄ¸Ä½ø£¬¹¦ÄÜÔ½À´Ô½Ç¿¡£ÏÖÔÚPerlµÄ¹¦ÄÜÒѾ­³¬ºõÔ­ÏÈÉè¼ÆÊ±µÄÏëÏ󣬼¸ºõÈκÎʶ¼¿ÉÒÔ×öµ½£¬Ò²±ä³Éÿһ²¿¹¤×÷Õ¾±Ø±¸µÄ±ê×¼¹¤¾ßÁË¡£Perl×îÎªÖøÃûµÄÒ»µã¾ÍÊÇËû¶Ô×Ö·û´®µÄ´¦Àí£¬ÓÉÓÚInternet¶ÔÎÄ×ÖÐÅÏ¢´¦ÀíµÄ¾Þ´óÐèÇó£¬Ê¹µÃPerlµÄÓ¦ÓÃÈçÈÕÖÐÌ죬¶øÇÒPerlÓïÑÔÒ²µÄÈ·ÊÇÒ»¸ö·Ç³£ÓÅÐãµÄÎÄ×ÖÐÅÏ¢´¦ÀíÓïÑÔ¡£
Ò»¸öÓÐÓõÄPerl³ÌÐò¿ÉÒԺ̡ܶ£ÀýÈçÏ£Íû¸ü»»´óÁ¿ÎļþÖеÄһЩÏàͬÄÚÈÝ£¬¿ÉÒÔʹÓÃÏÂÃæµÄÒ»ÌõÃüÁ
perl-e's/gopher/WorldWideWeb/gi'-p-i.bak*.html

ÏÂÃæÊÇÒ»¸ö»ù±¾µÄperl³ÌÐò£º
#!/usr/local/bin/perl
#
#Programtodotheobvious
print'Helloworld.';#Ö»ÊǼòµ¥µØÏÔʾ³öHelloworld.×Ö·û´®¡£


[Ŀ¼]

--------------------------------------------------------------------------------


±äÁ¿

PerlÖÐÓÐÈýÖÖ±äÁ¿£º±êÁ¿£¬Êý×飨ÁÐ±í£©ºÍÏà¹ØÊý×é¡£
PerlÖÐ×î»ù±¾µÄ±äÁ¿ÀàÐÍÊDZêÁ¿¡£±êÁ¿¼È¿ÉÒÔÊÇÊý×Ö£¬Ò²¿ÉÒÔÊÇ×Ö·û´®£¬¶øÇÒÁ½ÕßÊÇ¿ÉÒÔ»¥»»µÄ¡£¾ßÌåÊÇÊý×Ö»¹ÊÇ×Ö·û´®£¬¿ÉÒÔÓÐÉÏÏÂÎľö¶¨¡£±êÁ¿±äÁ¿µÄÓ﷨Ϊ$variable_name¡£ÀýÈ磺
$priority=9;
°Ñ9¸³Óè±êÁ¿±äÁ¿$priority£¬ÄãÒ²¿ÉÒÔ½«×Ö·û´®¸³Óè¸Ã±äÁ¿£º
$priority='high';

×¢ÒâÔÚPerlÖУ¬±äÁ¿ÃûµÄ´óСдÊÇÃô¸ÐµÄ£¬ËùÒÔ$aºÍ$AÊDz»Í¬µÄ±äÁ¿¡£
ÒÔϵÄÊýÖµ»ò×Ö·û´®¶¼¿ÉÒÔ¸³¸ø±êÁ¿£º
12312.45E-100xff(hex)0377(octal)
'Whatyou$seeis(almost)what youget''Don'tWalk'
"Howareyou?""Substitutevaluesof$xand in"quotes."
`date``uptime-u``du-sk$filespec|sort-n`
$x$list_of_things[5]$lookup{'key'}
´ÓÉÏÃæ¿ÉÒÔ¿´³ö£¬PerlÖÐÓÐÈýÖÖÀàÐ͵ÄÒýÓá£Ë«ÒýºÅ("")À¨ÆðÀ´µÄ×Ö·û´®ÖеÄÈκαêÁ¿ºÍÌØÊâÒâÒåµÄ×Ö·û¶¼½«±»Perl½âÊÍ¡£Èç¹û²»ÏëÈÃPerl½âÊÍ×Ö·û´®ÖеÄÈκαêÁ¿ºÍÌØÊâÒâÒåµÄ×Ö·û£¬Ó¦¸Ã½«×Ö·û´®Óõ¥À¨ºÅÀ¨ÆðÀ´¡£Õâʱ£¬Perl²»½âÊÍÆäÖеÄÈκÎ×Ö·û£¬³ýÁË\ºÍ'¡£×îºó£¬¿ÉÒÔÓã¨`£©½«ÃüÁîÀ¨ÆðÀ´£¬ÕâÑù£¬ÆäÖеÄÃüÁî¿ÉÒÔÕý³£ÔËÐУ¬²¢Äܵõ½ÃüÁîµÄ·µ»ØÖµ¡£Çë¿´ÏÂÃæµÄÀý×Ó£º

1#!/usr/bin/perl
2$folks="100";
3print"$folks=$folks ";
4print'$folks=$folks ';
5print" BEEP!aLSOMEBLANKELINESHERE ";
6$date=`date+%D`;
7print"Todayis[$date] ";
8chop$date;
9print"Dateafterchoppingoffcarriagereturn:[".$date."] ";

×¢Òâʵ¼Ê³ÌÐòÖв»Ó¦¸Ã°üÀ¨Ðкš£ÆäÊä³ö½á¹ûÈçÏ£º

$folks=100
$folks=$folks
BEEP!someblankLINESHERE
Todayis[03/29/96]
Dateafterchoppingoffcarriagereturn:[03/29/96]

µÚ3ÐÐÏÔʾ$folksµÄÖµ¡£$֮ǰ±ØÐëʹÓû»Âë·û£¬ÒÔ±ãPerlÏÔʾ×Ö·û´®$folks¶ø²»ÊÇ$folksµÄÖµ100¡£
µÚ4ÐÐʹÓõÄÊǵ¥ÒýºÅ£¬½á¹ûPerl²»½âÊÍÆäÖеÄÈκÎÄÚÈÝ£¬Ö»ÊÇÔ­·â²»¶¯µØ½«×Ö·û´®ÏÔʾ³öÀ´¡£
µÚ6ÐÐʹÓõÄÊÇ£¨`£©£¬Ôòdate+%DÃüÁîµÄÖ´Ðнá¹û´æ´¢ÔÚ±êÁ¿$dateÖС£

ÉÏÀýÖÐʹÓÃÁËһЩÓÐÌØÊâÒâÒåµÄ×Ö·û£¬ÏÂÃæÁгöÕâЩ×Ö·ûµÄº¬Ò壺
»»ÐС£
»Ø³µ¡£
ÖÆ±í·û¡£
a·äÃùÉù¡£
Backspace¡£
LE½«LºÍEÖ®¼äµÄ×Ö·ûת»»³ÉСд¡£
l½«ÆäºóµÄ×Ö·ûת»»³ÉСд¡£
UE½«UºÍEÖ®¼äµÄ×Ö·ûת»»³É´óд¡£
u½«ÆäºóµÄ×Ö·ûת»»³É´óд¡£
cC²åÈë¿ØÖÆ×Ö·ûC¡£
x##Ê®Áù½øÖÆÊý##¡£
ooo°Ë½øÖÆÊýooo¡£
\·´Ð±¸Ü¡£
°´Ô­ÑùÊä³öÏÂÒ»¸ö×Ö·û£¬ÀýÈ磺$Êä³ö$¡£
PerlÖеÄÊý×ÖÊÇÒÔ¸¡µãÐÎʽ´æ´¢µÄ¡£ÏÂÃæÁгöÓйصÄÊý×ÖÔËËã·û£º
$a=1+2;#1¼Ó2£¬½á¹û´æ´¢ÔÚ$aÖС£
$a=3-4;#3¼õ4£¬½á¹û´æ´¢ÔÚ$aÖС£
$a=5*6;#5³Ë6£¬½á¹û´æ´¢ÔÚ$aÖС£
$a=7/8;#7³ýÒÔ8£¬½á¹û´æ´¢ÔÚ$aÖС£
$a=9**10;#9µÄ10´Î·½£¬½á¹û´æ´¢ÔÚ$aÖС£
$a=5%2;#È¡5³ý2µÄÓàÊý£¬½á¹û´æ´¢ÔÚ$aÖС£
++$a;#$a¼Ó1£¬È»ºó¸³Óè$a¡£
$a++;#ÏȽ«$a·µ»Ø£¬È»ºó$a¼Ó1¡£
--$a;#$a¼õ1£¬È»ºó¸³Óè$a¡£
$a--;#ÏȽ«$a·µ»Ø£¬È»ºó$a¼õ1¡£
PerlÖ§³ÖµÄÂß¼­ÔËËã·û£º
$r=$x||$y$r=$x»ò$y¡£
$r=$x&&$y$r=$xÓë$y¡£
$r=!$x$r=·Ç$x¡£
¶ÔÓÚ×Ö·û±êÁ¿£¬PerlÖ§³ÖÏÂÃæµÄÔËËã·û£º
$a=$b.$c;#½«$bºÍ$cÁ¬½Ó£¬È»ºó¸³Óè$a¡£
$a=$bx$c;#$bÖØ¸´$c´Î£¬È»ºó¸³Óè$a¡£
ÏÂÃæÊÇPerlÖеĸ³Öµ·½·¨£º
$a=$b;#½«$b¸³Óè$a¡£
$a+=$b;#$b¼Ó$a£¬È»ºó¸³Óè$a¡£
$$a-=$b;#$a¼õ$b£¬È»ºó¸³Óè$a¡£
$a.=$b;#°Ñ$bÁ¬½Óµ½$aµÄºóÃæ£¬È»ºó¸³Óè$a¡£
ÄãÒ²¿ÉÒÔʹÓÃÏÂÃæµÄ±È½ÏÔËËã·û£º
$x==$yÈç¹û$xºÍ$yÏàµÈ£¬Ôò·µ»ØÕæ¡£
$x!=$yÈç¹û$xºÍ$y²»ÏàµÈ£¬Ôò·µ»ØÕæ¡£
$x<$yÈç¹û$x±È$yС£¬Ôò·µ»ØÕæ¡£
$x<=$yÈç¹û$xСÓÚµÈÓÚ$y£¬Ôò·µ»ØÕæ¡£
$x>$yÈç¹û$x±È$y´ó£¬Ôò·µ»ØÕæ¡£
$x>=$yÈç¹û$x´óÓÚµÈÓÚ$y£¬Ôò·µ»ØÕæ¡£
$xeq$yÈç¹û×Ö·û´®$xºÍ×Ö·û´®$yÏàͬ£¬Ôò·µ»ØÕæ¡£

Êý×é
Êý×éÒ²½Ð×öÁÐ±í£¬ÊÇÓÉһϵÁеıêÁ¿×é³ÉµÄ¡£Êý×é±äÁ¿ÒÔ@¿ªÍ·¡£Çë¿´ÒÔϵĸ³ÖµÓï¾ä£º
@food=("apples"£¬"pears"£¬"eels");
@music=("whistle"£¬"flute");

Êý×éµÄϱê´Ó0¿ªÊ¼£¬Äã¿ÉÒÔʹÓ÷½À¨ºÅÒýÓÃÊý×éµÄϱ꣺
$food[2]
·µ»Øeels¡£×¢Òâ@ÒѾ­±ä³ÉÁË$£¬ÒòΪeelsÊÇÒ»¸ö±êÁ¿¡£

ÔÚPerlÖУ¬Êý×éÓжàÖÖ¸³Öµ·½·¨£¬ÀýÈ磺
@moremusic=("organ"£¬@music£¬"harp");
@moremusic=("organ"£¬"whistle"£¬"flute"£¬"harp");

»¹ÓÐÒ»ÖÖ·½·¨¿ÉÒÔ½«ÐµÄÔªËØÔö¼Óµ½Êý×éÖУº
push(@food£¬"eggs");

°ÑeggsÔö¼Óµ½Êý×é@foodµÄÄ©¶Ë¡£ÒªÍùÊý×éÖÐÔö¼Ó¶à¸öÔªËØ£¬¿ÉÒÔʹÓÃÏÂÃæµÄÓï¾ä£º
push(@food£¬"eggs"£¬"lard");
push(@food£¬("eggs"£¬"lard"));
push(@food£¬@morefood);
push·µ»ØÊý×éµÄг¤¶È¡£

popÓÃÀ´½«Êý×éµÄ×îºóÒ»¸öÔªËØÉ¾³ý£¬²¢·µ»Ø¸ÃÔªËØ¡£ÀýÈ磺
@food=("apples"£¬"pears"£¬"eels");
$grub=pop(@food);#´Ëʱ$grub="eels"
Çë¿´ÏÂÃæµÄÀý×Ó£º
1#!/usr/bin/perl
2#
3#AnexampletoshowhowarraysworkinPerl
4#
5@amounts=(10£¬24£¬39);
6@parts=('computer'£¬'rat'£¬"kbd");
7
8$a=1;$b=2;$c='3';
9@count=($a£¬$b£¬$c);
10
11@empty=();
12
13@spare=@parts;
14
15print'@amounts=';
16print"@amounts ";
17
18print'@parts=';
19print"@parts ";
20
21print'@count=';
22print"@count ";
23
24print'@empty=';
25print"@empty ";
26
27print'@spare=';
28print"@spare ";
29
30
31#
32#Accessingindividualitemsinanarray
33#
34print'$amounts[0]=';
35print"$amounts[0] ";
36print'$amounts[1]=';
37print"$amounts[1] ";
38print'$amounts[2]=';
39print"$amounts[2] ";
40print'$amounts[3]=';
41print"$amounts[3] ";
42
43print"Itemsin@amounts=$#amounts ";
44$size=@amounts;print"SizeofAmount=$size ";
45print"Item0in@amounts=$amounts[$[] ";
ÒÔÏÂÊÇÏÔʾ½á¹û£º
@amounts=102439
@parts=computerratkbd
@count=123
@empty=
@spare=computerratkbd
$amounts[0]=10
$amounts[1]=24
$amounts[2]=39
$amounts[3]=
Itemsin@amounts=2
SizeofAmount=3
Item
µÚ5 ÐУ¬Èý¸öÕûÊýÖµ¸³¸øÁËÊý×é@amounts¡£µÚ6ÐУ¬Èý¸ö×Ö·û´®¸³¸øÁËÊý×é@parts¡£µÚ8ÐУ¬×Ö·û´®ºÍÊý×ֱַ𸳸øÁËÈý¸ö±äÁ¿£¬È»ºó½«Èý¸ö±äÁ¿¸³¸øÁËÊý×é@count¡£11Ðд´½¨ÁËÒ»¸ö¿ÕÊý×é¡£13Ðн«Êý×é@spare¸³¸øÁËÊý×é@parts¡£15µ½28ÐÐÊä³öÁËÏÔʾµÄǰ5ÐС£34µ½41Ðзֱð´æÈ¡Êý×é@amountsµÄÿ¸öÔªËØ¡£×¢Òâ$amount[3]²»´æÔÚ£¬ËùÒÔÏÔʾһ¸ö¿ÕÏî¡£43ÐÐÖÐʹÓÃ$#array·½Ê½ÏÔʾһ¸öÊý×éµÄ×îºóÒ»¸öϱ꣬ËùÒÔÊý×é@amountsµÄ´óСÊÇ($#amounts+1)¡£44ÐÐÖн«Ò»¸öÊý×鸳¸øÁËÒ»¸ö±êÁ¿£¬Ôò½«Êý×éµÄ´óС¸³¸øÁ˱êÁ¿¡£45ÐÐʹÓÃÁËÒ»¸öPerlÖеÄÌØÊâ±äÁ¿$[£¬ÓÃÀ´±íʾһ¸öÊý×éµÄÆðʼλÖã¨È±Ê¡Îª0£©¡£

Ïà¹ØÊý×é
Ò»°ãµÄÊý×éÔÊÐíÎÒÃÇͨ¹ýÊý×ÖÏÂ±ê´æÈ¡ÆäÖеÄÔªËØ¡£ÀýÈçÊý×é @foodµÄµÚÒ»¸öÔªËØÊÇ$food[0]£¬µÚ¶þ¸öÔªËØÊÇ$food[1]£¬ÒÔ´ËÀàÍÆ¡£µ«PerlÔÊÐí´´½¨Ïà¹ØÊý×飬ÕâÑùÎÒÃÇ¿ÉÒÔͨ¹ý×Ö·û´®´æÈ¡Êý×é¡£Æäʵ£¬Ò»¸öÏà¹ØÊý×éÖÐÿ¸öϱêË÷Òý¶ÔÓ¦Á½¸öÌõÄ¿£¬µÚÒ»¸öÌõÄ¿½Ð×ö¹Ø¼ü×Ö£¬µÚ¶þ¸öÌõÄ¿½Ð×öÊýÖµ¡£ÕâÑù£¬Äã¾Í¿ÉÒÔͨ¹ý¹Ø¼ü×ÖÀ´¶ÁÈ¡ÊýÖµ¡£Ïà¹ØÊý×éÃûÒ԰ٷֺŠ(%)¿ªÍ·£¬Í¨¹ý»¨À¨ºÅ({})ÒýÓÃÌõÄ¿¡£ÀýÈ磺

%ages=("MichaelCaine"£¬39£¬
"DirtyDen"£¬34£¬
"Angie"£¬27£¬
"Willy"£¬"21indogyears"£¬
"TheQueenMother"£¬108);
ÕâÑùÎÒÃÇ¿ÉÒÔͨ¹ýÏÂÃæµÄ·½·¨¶ÁÈ¡Êý×éµÄÖµ£º
$ages{"MichaelCaine"};#Returns39
$ages{"DirtyDen"};#Returns34
$ages{"Angie"};#Returns27
$ages{"Willy"};#Returns"21indogyears"
$ages{"TheQueenMother"};#Returns108



[Ŀ¼]

--------------------------------------------------------------------------------


Îļþ²Ù×÷

Îļþ¾ä±úºÍÎļþ²Ù×÷
ÎÒÃÇ¿ÉÒÔͨ¹ýÏÂÃæµÄ³ÌÐòÁ˽âÒ»ÏÂÎļþ¾ä±úµÄ»ù±¾Ó÷¨¡£´Ë³ÌÐòµÄÖ´Ðнá¹ûºÍUNIXϵͳ
µÄcatÃüÁîÒ»Ñù£º
#!/usr/local/bin/perl
#
#Programtoopenthepasswordfile£¬readitin£¬
#printit£¬andcloseitagain.
$file='/etc/passwd';#Namethefile
open(INFO£¬$file);#Openthefile
@lines=;#Readitintoanarray
close(INFO);#Closethefile
print@lines;#Printthearray
openº¯Êý´ò¿ªÒ»¸öÎļþÒÔ¹©¶ÁÈ¡£¬ÆäÖеÚÒ»¸ö²ÎÊýÊÇÎļþ¾ä±ú£¨filehandle£©¡£Îļþ¾ä±úÓÃÀ´¹©PerlÔÚÒÔºóÖ¸Ïò¸ÃÎļþ¡£µÚ¶þ¸ö²ÎÊýÖ¸Ïò¸ÃÎļþµÄÎļþÃû¡£closeº¯Êý¹Ø±Õ¸ÃÎļþ¡£
openº¯Êý»¹¿ÉÒÔÓÃÀ´´ò¿ªÎļþÒÔ¹©Ð´ÈëºÍ×·¼Ó£¬Ö»Ðë·Ö±ðÔÚÎļþÃû֮ǰ¼ÓÉÏ>ºÍ>>£º
open(INFO£¬$file);#Openforinput
open(INFO£¬">$file");#Openforoutput
open(INFO£¬">>$file");#Openforappending
open(INFO£¬"<$file");#Alsoopenforinput

ÁíÍ⣬Èç¹ûÄãÏ£ÍûÊä³öÄÚÈݵ½Ò»¸öÒѾ­´ò¿ª¹©Ð´ÈëµÄÎļþÖУ¬Äã¿ÉÒÔʹÓôøÓжîÍâ²ÎÊýµÄprintÓï¾ä¡£ÀýÈ磺
printINFO"Thislinegoestothefile. ";
×îºó£¬¿ÉÒÔʹÓÃÈçϵÄÓï¾ä´ò¿ª±ê×¼ÊäÈ루ͨ³£Îª¼üÅÌ£©ºÍ±ê×¼Êä³ö£¨Í¨³£ÎªÏÔʾÆ÷£©£º
open(INFO£¬'-');#Openstandardinput
open(INFO£¬'>-');#Openstandardoutput
Ò»¸öPerl³ÌÐòÔÚËüÒ»Æô¶¯Ê±¾ÍÒѾ­ÓÐÁËÈý¸öÎļþ¾ä±ú£ºSTDIN(±ê×¼ÊäÈëÉ豸)£¬STDOUT(±ê×¼Êä³öÉ豸)ºÍSTDERR(±ê×¼´íÎóÐÅÏ¢Êä³öÉ豸)¡£Èç¹ûÏëÒª´ÓÒ»¸öÒѾ­´ò¿ªµÄÎļþ¾ä±úÖжÁÈ¡ÐÅÏ¢£¬¿ÉÒÔʹÓÃ<>ÔËËã·û¡£

ʹÓÃreadºÍwriteº¯Êý¿ÉÒÔ¶Áдһ¸ö¶þ½øÖƵÄÎļþ¡£ÆäÓ÷¨ÈçÏ£º
read(HANDLE£¬$buffer£¬$length[£¬$offset]);
´ËÃüÁî¿ÉÒÔ°ÑÎļþ¾ä±úÊÇHANDLEµÄÎļþ´ÓÎļþ¿ªÊ¼Î»ÒÆ$offset´¦£¬¹²$length×Ö½Ú£¬¶Áµ½$bufferÖС£ÆäÖÐ$offsetÊÇ¿ÉÑ¡ÏÈç¹ûÊ¡ÂÔ$offset£¬Ôòread()´Óµ±Ç°Î»ÖõÄǰ$length¸ö×Ö½Ú¶ÁÈ¡µ½µ±Ç°Î»Ö᣿ÉÒÔʹÓÃÏÂÃæµÄÃüÁî²é¿´ÊÇ·ñµ½ÁËÎļþĩβ£º
eof(HANDLE);
Èç¹û·µ»ØÒ»¸ö·ÇÁãÖµ£¬Ôò˵Ã÷ÒѾ­µ½´ïÎļþµÄĩβ¡£
´ò¿ªÎļþʱ¿ÉÄܳö´í£¬ËùÒÔ¿ÉÒÔʹÓÃdie()ÏÔʾ³ö´íÐÅÏ¢¡£ÏÂÃæ´ò¿ªÒ»¸ö½Ð×ö¡°test.data¡±µÄÎļþ£º
open(TESTFILE£¬"test.data")||die" $0Cannotopen$! ";



[Ŀ¼]

--------------------------------------------------------------------------------


Á÷³Ì¿ØÖÆ

foreachÑ­»·
ÔÚPerlÖУ¬¿ÉÒÔʹÓÃforeachÑ­»·À´¶ÁÈ¡Êý×é»òÆäËûÀàËÆÁбí½á¹¹ÖеÄÿһÐС£Çë¿´ÏÂÃæµÄÀý×Ó£º
foreach$morsel(@food)#Visiteachiteminturn
#andcallit$morsel
{
print"$morsel ";#Printtheitem
print"Yumyum ";#Thatwasnice
}

ÿ´ÎÒªÖ´ÐеÄÃüÁîÓû¨À¨ºÅÀ¨³ö¡£µÚÒ»´ÎÖ´ÐÐʱ$morsel±»¸³ÓèÊý×é@foodµÄµÚÒ»¸öÔªËØµÄÖµ£¬µÚ¶þ´ÎÖ´ÐÐʱ$morsel±»¸³ÓèÊý×é@foodµÄµÚ¶þ¸öÔªËØµÄÖµ£¬ÒÔ´ËÀàÍÆÖ±µ½Êý×éµÄ×îºóÒ»¸öÔªËØ¡£

ÅжÏÔËËã
ÔÚPerlÖÐÈκηÇÁãµÄÊý×ֺͷǿյÄ×Ö·û´®¶¼±»ÈÏΪÊÇÕæ¡£Á㡢ȫΪÁãµÄ×Ö·û´®ºÍ¿Õ×Ö·û´®¶¼Îª¼Ù¡£

ÏÂÃæÊÇһЩÅжÏÔËËã·û£º
$a==$bÈç¹û$aºÍ$bÏàµÈ£¬Ôò·µ»ØÕæ¡£
$a!=$bÈç¹û$aºÍ$b²»ÏàµÈ£¬Ôò·µ»ØÕæ¡£
$aeq$bÈç¹û×Ö·û´®$aºÍ×Ö·û´®$bÏàͬ£¬Ôò·µ»ØÕæ
$ane$bÈç¹û×Ö·û´®$aºÍ×Ö·û´®$b²»Ïàͬ£¬Ôò·µ»ØÕæ¡£

Äã¿ÉÒÔʹÓÃÂß¼­ÔËËã·û£º
($a&&$b)$aÓë$b¡£
($a||$b)$a»ò$b¡£
!($a)·Ç$a¡£

forÑ­»·
PerlÖеÄfor½á¹¹ºÍCÓïÑÔÖеÄfor½á¹¹»ù±¾Ò»Ñù£º

for(initialise;test;inc){
first_action;
second_action;
etc
}

ÏÂÃæÊÇÒ»¸öforÑ­»·µÄÀý×Ó£¬ÓÃÀ´ÏÔʾ´Ó0µ½9µÄÊý×Ö£º

for($i=0;$i<10;++$i)#Startwith$i=1
#Doitwhile$i<10
#Increment$ibeforerepeating
{
print"$i ";
}

whileºÍuntilÑ­»·
ÏÂÃæÊÇÒ»¸öwhileºÍuntilÑ­»·µÄÀý×Ó¡£Ëü´Ó¼üÅ̶ÁÈ¡ÊäÈëÖ±µ½µÃµ½ÕýÈ·µÄ¿ÚÁîΪֹ¡£

#!/usr/local/bin/perl
print"Password?";#Askforinput
$a=;#Getinput
chop$a;#Removethenewlineatend
while($ane"fred")#Whileinputiswrong...
{
print"sorry.Again?";#Askagain
$a=;#Getinputagain
chop$a;#Chopoffnewlineagain
}

µ±ÊäÈëºÍ¿ÚÁî²»ÏàµÈʱ£¬Ö´ÐÐwhileÑ­»·¡£
ÄãÒ²¿ÉÒÔÔÚÖ´ÐÐÌåµÄĩβ´¦Ê¹ÓÃwhileºÍuntil£¬ÕâʱÐèÒªÓÃdoÓï¾ä£º

#!/usr/local/bin/perl
do
{
"Password?";#Askforinput
$a=;#Getinput
chop$a;#Chopoffnewline
}
while($ane"fred")#Redowhilewronginput

Ìõ¼þ½á¹¹
PerlÒ²ÔÊÐíif/then/else±í´ïʽ¡£Çë¿´ÏÂÃæµÄÀý×Ó£º

if($a){
print"Thestringisnotempty ";
}
else{
print"Thestringisempty ";
}
×¢ÒâÔÚPerlÖУ¬¿Õ×Ö·û±»ÈÏΪÊǼ١£

If½á¹¹ÖÐÒ²¿ÉÒÔʹÓÃǶÌ׽ṹ£º

if(!$a)#The!isthenotoperator
{
print"Thestringisempty ";
}
elsif(length($a)==1)#Ifabovefails£¬trythis
{
print"Thestringhasonecharacter ";
}
elsif(length($a)==2)#Ifthatfails£¬trythis
{
print"Thestringhastwocharacters ";
}
else#Now£¬everythinghasfailed
{
print"Thestringhaslotsofcharacters ";



[Ŀ¼]

--------------------------------------------------------------------------------


×Ö·ûÆ¥Åä

Perl×Ö·ûÆ¥Å书ÄÜÊ®·ÖÇ¿´ó¡£×Ö·ûÆ¥Å书ÄܵĺËÐÄÊǹæÔò±í´ïʽ£¨RE£©£¬Ò²¾ÍÊÇ×Ö·ûÆ¥Åä¹ý³ÌÖÐÉæ¼°µ½µÄ¸ñʽ¡£=~ÔËËã·ûÓÃÀ´½øÐиñʽƥÅäºÍÌæ»»¡£ÀýÈ磺
Èç¹û£º
$s='Oneifbylandandtwoifbysea';
Ôò£º
if($s=~/ifbyla/){print"YES"}
else{print"NO"}
½«»áÏÔʾYES£¬ÒòΪifbylaÔÚ×Ö·û´®$sÖС£ÔÙÀýÈ磺
if($s=~/one/){print"YES"}
else{print"NO"}
½«ÏÔʾNO£¬ÒòΪREÊǶԴóСдÃô¸ÐµÄ¡£Èç¹ûʹÓÃiÑ¡ÏÔò½«ºöÂÔ´óСд£¬ÔòÏÂÃæ»áÏÔʾ³öYES£º
if($s=~/one/i){print"YES"}
else{print"NO"}
ÏÂÃæÁгöÁËREÖÐÐí¶à¾ßÓÐÌØÊâÒâÒåµÄ×Ö·û£º

.ÈκÎ×Ö·û³ýÁË»»Ðзû£¨£©
^Ò»ÐкÍÒ»¸ö×Ö·û´®µÄ¿ªÊ¼
$Ò»ÐкÍÒ»¸ö×Ö·û´®µÄ½áÊø
*Æäǰһ¸ö×Ö·ûÖØ¸´Áã´Î»ò¶à´Î
+Æäǰһ¸ö×Ö·ûÖØ¸´Ò»´Î»ò¶à´Î
?Æäǰһ¸ö×Ö·ûÖØ¸´Áã´Î»òÒ»´Î

ÀýÈ磺
if($x=~/l.mp/){print"YES"}
¶ÔÓÚ$x=¡°lamp¡±¡¢¡°lump¡±¡¢¡°slumped¡±½«ÏÔʾYES£¬µ«¶ÔÓÚ$x=¡°lmp¡±»ò¡°lessamperes¡±½«²»»áÏÔʾYES¡£

ÔÙ¿´ÏÂÃæµÄÀý×Ó£º
/fr.*nd/Æ¥Åäfrnd¡¢friend¡¢frontandback¡£
/fr.+nd/Æ¥Åäfrond¡¢friend¡¢frontandback¡£µ«²»Æ¥Åäfrnd¡£
/10*1/Æ¥Åä11¡¢101¡¢1001¡¢100000001¡£
/b(an)*a/Æ¥Åäba¡¢bana¡¢banana¡¢banananana¡£
/flo?at/Æ¥ÅäflatºÍfloat£¬µ«²»Æ¥Åäflooat¡£

·½À¨ºÅÓÃÀ´Æ¥ÅäÆäÖеÄÈκÎ×Ö·û¡£·½À¨ºÅÖеÄ-·ûºÅÓÃÀ´±íÃ÷ÔÚʲô֮¼ä£¬^·ûºÅ±íÃ÷·ÇµÄÒâ˼¡£
[0123456789]Æ¥ÅäÈκε¥¸öµÄÊý×Ö¡£
[0-9]Æ¥ÅäÈκε¥¸öµÄÊý×Ö¡£
[a-z]+Æ¥ÅäÈκÎÓÉСд×Öĸ×é³ÉµÄµ¥´Ê¡£
[^0-9]Æ¥ÅäÈκηÇÊý×ÖµÄ×Ö·û¡£

·´Ð±¸Ü»¹ÊÇÓÃÓÚתÒå¡£Èç¹ûÄãÏëÆ¥Åä+¡¢?¡¢.¡¢*¡¢^¡¢$¡¢(¡¢)¡¢[¡¢]¡¢{¡¢}¡¢|¡¢ºÍ/ÕâЩ×Ö·û£¬ÔòÆäÇ°Ãæ±ØÐëÓ÷´Ð±¸Ü£¨£©¡£ÀýÈ磺
/10.2/Æ¥Åä10Q2¡¢1052ºÍ10.2¡£
/10.2/Æ¥Åä10.2£¬µ«²»ºÍ10Q2»ò1052Æ¥Åä¡£
/*+/Æ¥ÅäÒ»¸ö»ò¶à¸öÐǺš£
/A:\DIR/Æ¥ÅäA:DIR¡£
//usr/bin/Æ¥Åä/usr/bin¡£

ÏÂÃæ»¹ÓÐÒ»Ð©ÌØÊâÒâÒåµÄ×Ö·û£º
»»ÐС£
ÖÆ±í·û¡£
wÈκÎ×ÖĸºÍÊý×ÖºÍ[a-zA-Z0-9_]Ò»Ñù¡£
WÈκηÇ×ÖĸºÍÊý×ÖºÍ[^a-zA-Z0-9_]Ò»Ñù¡£
dÈκÎÊý×ÖºÍ[0-9]Ò»Ñù¡£
DÈκηÇÊý×ÖºÍ[^0-9]Ò»Ñù¡£
sÈκοհ××Ö·û£º¿Õ¸ñ¡¢tab¡¢»»Ðеȡ£
SÈκηǿհ××Ö·û¡£
µ¥´Ê±ß½ç£¬Ö»¶Ô[]ÒÔÍâÓÐЧ¡£
B·Çµ¥´Ê±ß½ç¡£

Ìæ»»
Perl¿ÉÒÔʹÓÃsº¯ÊýÀûÓÃ×Ö·ûÆ¥ÅäµÄ½á¹û½øÐÐ×Ö·ûÌæ»»¡£sº¯ÊýºÍvi±à¼­Æ÷µÄ×÷Óûù±¾Ò»Ñù¡£Õâʱ»¹ÊÇʹÓÃ×Ö·ûÆ¥ÅäÔËËã·û=~£¬ÀýÈ磺½«×Ö·û´®$sentenceÖÐËù³öÏÖµÄlondonÓÃLondonÌæ»»£¬¿ÉÒÔʹÓÃÈçϵÄÃüÁ
$sentence=~s/london/London/
ÃüÁîµÄ·µ»ØÖµÊÇËù×öµÄÌæ»»ÊýÄ¿¡£

µ«´ËÃüÁîÖ»ÄÜÌæ»»µÚÒ»¸ö³öÏÖµÄlondon¡£Èç¹ûÏ£Íû½«ËùÓÐÔÚ×Ö·û´®ÖгöÏÖµÄlondon¶¼ÓÃLondonÌæ»»£¬ÔòӦʹÓÃ/gÑ¡Ï
s/london/London/g
´ËÃüÁîµÄ¶ÔÏóÊÇ$_±äÁ¿£¬Ò²¾ÍÊǵ±Ç°µÄȱʡ±äÁ¿¡£

Èç¹ûÏ£Íû»¹ÄÜÌæ»»ÀàËÆlOndon¡¢lonDON¡¢LoNDoNµÄ×Ö·û´®£¬¿ÉÒÔʹÓãº
s/[Ll][Oo][Nn][Dd][Oo][Nn]/London/g

µ«¸üΪ¼òµ¥µÄ·½·¨ÊÇʹÓÃiÑ¡ÏҲ¾ÍÊǺöÂÔ´óСд£º
s/london/London/gi

·­Òë
trº¯ÊýÔÊÐíÖð×ֵط­Òë¡£ÏÂÃæµÄÃüÁîʹµÃ×Ö·û´®$sentenceÖеÄa¡¢b¡¢c·Ö±ðÓÉe¡¢f¡¢d´úÌæ£º

$sentence=~tr/abc/efd/

½á¹û·µ»ØËù×öµÄÌæ»»ÊýÄ¿¡£
´ó¶àÊýREÖеÄÌØÊâ×Ö·ûÔÚtrº¯ÊýÖв¢²»´æÔÚ¡£ÀýÈçÏÂÃæµÄÃüÁîÓÃÀ´¼ÆËã×Ö·û´®$sentenceÖÐÐǺţ¨*£©µÄÊýÄ¿£¬²¢½«½á¹û´æ´¢ÔÚ$count:

$count=($sentence=~tr/*/*/);



[Ŀ¼]

--------------------------------------------------------------------------------


×Ó¹ý³Ì

×Ó¹ý³ÌµÄ¶¨Òå
PerlÓïÑÔÒ²¿ÉÒÔ¶¨Òå×Ô¼ºµÄ×Ó¹ý³Ì¡£×Ó¹ý³ÌµÄ¶¨ÒåÈçÏ£º
submysubroutine{
print"Notaveryinterestingroutine ";
print"Thisdoesthesamethingeverytime ";
}
ÏÂÃæµÄ¼¸ÖÖ·½·¨¶¼¿ÉÒÔµ÷ÓÃÕâ¸ö×Ó¹ý³Ì£º
&#Callthesubroutine
&mysubroutine($_);#Callitwithaparameter
&mysubroutine(1+2£¬$_);#Callitwithtwoparameters
²ÎÊý
µ÷ÓÃÒ»¸ö×Ó¹ý³Ìʱ£¬ËùÓеIJÎÊý¶¼´«Ë͵½ÁËÊý×é@_ÖС£ÏÂÃæ×Ó¹ý³ÌµÄÀý×ÓÏÔʾ³öËùÓеÄ
²ÎÊý£º
subprintargs{
print"@_ ";
}
&printargs("perly"£¬"king");#Exampleprints"perlyking"
&printargs("frog"£¬"and"£¬"toad");#Prints"frogandtoad"

·µ»ØÖµ
ÏÂÃæµÄÀý×Ó·µ»ØÁ½¸öÊäÈë²ÎÊýµÄ×î´óÖµ£º
submaximum{
if($_[0]>$_[1]){
$_[0];
}
else{
$_[1];
$biggest=&maximum(37£¬24);#Now$biggestis37






[Ŀ¼]

--------------------------------------------------------------------------------


Àý×Ó

×îºóÇë¿´Ò»¸öPerlÓïÑÔµÄÍêÕûµÄÀý×Ó¡£
´Ë³ÌÐò´ÓÒ»¸ö¼Ç¼ѧÉúÐÅÏ¢µÄÎļþstufileºÍÒ»¸ö¼Ç¼ѧÉú³É¼¨µÄÎļþscorefileÖÐÉú³ÉÒ»¸ö
ѧÉú³É¼¨±¨¸æµ¥¡£
ÊäÈëÎļþstufileÓÉѧÉúID¡¢ÐÕÃûºÍÄê¼¶Èý¸ö×Ö¶Î×é³É£¬Æä¼äÓɷֺŸô¿ª£º
123456£»Washington£¬George£»SR
246802£»Lincoln£¬Abraham"Abe"£»SO
357913£»Jefferson£¬Thomas£»JR
212121£»Roosevelt£¬Theodore"Teddy"£»SO

ÎļþscorefileÓÉѧÉúID¡¢¿ÆÄ¿ºÅ¡¢·ÖÊýÈý¸ö×Ö¶Î×é³É£¬Óɿոñ¸ô¿ª£º
123456 1 98
212121 1 86
246802 1 89
357913 1 90
123456 2 96
212121 2 88
357913 2 92
123456 3 97
212121 3 96
246802 3 95
357913 3 94

³ÌÐòÓ¦¸ÃÊä³öÈçϵĽá¹û£º

Stu-IDName...123Totals:
357913Jefferson£¬Thomas909294276
246802Lincoln£¬Abraham"Abe"8995184
212121Roosevelt£¬Theodore"Teddy"868896270
123456Washington£¬George989697291
Totals:363276382

Ô´³ÌÐòÈçÏ£º

#!/usr/local/bin/perl
#Gradebook-demonstratesI/O£¬associative
#arrays£¬sorting£¬andreportformatting.
#Thisaccommodatesanynumberofexamsandstudents
#andmissingdata.Inputfilesare:
$stufile='stufile';
$scorefile='scorefile';
#Iffileopenssuccessfully£¬thisevaluatesas"true"£¬andPerl
#doesnotevaluaterestofthe"or""||"
open(NAMES£¬"<$stufile")||die"Can'topen$stufile$!";
open(SCORES£¬"<$scorefile")||die"Can'topen$scorefile$!";
#Buildanassociativearrayofstudentinfo
#keyedbystudentnumber
while(){
($stuid£¬$name£¬$year)=split(':'£¬$_);
$name{$stuid}=$name;
if(length($name)>$maxnamelength){
$maxnamelength=length($name);
}}
closeNAMES;
#Buildatablefromthetestscores:
while(){
($stuid£¬$examno£¬$score)=split;
$score{$stuid£¬$examno}=$score;
if($examno>$maxexamno){
$maxexamno=$examno;
}}
closeSCORES;
#Printthereportfromaccumulateddata!
printf"%6s%-${maxnamelength}s"£¬
'Stu-ID'£¬'Name...';
foreach$examno(1..$maxexamno){
printf"%4d"£¬$examno;
}
printf"%10s "£¬'Totals:';
#Subroutine"byname"isusedtosortthe%namearray.
#The"sort"functiongivesvariables$aand$bto
#subroutinesitcalls.
#"xcmpy"functionreturns-1ifx #+1ifx>y.SeethePerldocumentationfordetails.
subbyname{$name{$a}cmp$name{$b}}
#OrderstudentIDssothenamesappearalphabetically:
foreach$stuid(sortbynamekeys(%name)){
#Printscoresforastudent£¬andatotal:
printf"%6d%-${maxnamelength}s"£¬
$stuid£¬$name{$stuid};
$total=0;
foreach$examno(1..$maxexamno){
printf"%4s"£¬$score{$stuid£¬$examno};
$total+=$score{$stuid£¬$examno};
$examtot{$examno}+=$score{$stuid£¬$examno};
}
printf"%10d "£¬$total;
}
printf" %6s%${maxnamelength}s"£¬"Totals:";
foreach$examno(1..$maxexamno){
printf"%4d"£¬$examtot{$examno};
}
print" ";
exit(0);



[Ŀ¼]

--------------------------------------------------------------------------------


ÕýÔò±í´ïʽ

ÕýÔò±í´ïʽ
ÕýÔò±í´ïʽÔÚ shell¡¢¹¤¾ß³ÌÐò¡¢Perl ÓïÑÔÖÐÓзdz£ÖØÒªµÄµØÎ»¡£ÕýÔò±í´ïʽͨ¹ýÒ»Ð©ÌØÊâ·ûºÅ±íÊ¾ÌØ¶¨µÄ×Ö·û´®Ä£Ê½¡£³£¼ûµÄÌØÊâ×Ö·û°üÀ¨£º

×Ö·û ¹¦ÄÜ
^ ÖÃÓÚ´ýËÑË÷µÄ×Ö·û´®Ö®Ç°£¬Æ¥ÅäÐÐÊ×µÄ×Ö
$ ÖÃÓÚ´ýËÑË÷µÄ×Ö·û´®Ö®ºó£¬Æ¥ÅäÐÐÄ©µÄ×Ö
< Æ¥ÅäÒ»¸ö×ÖµÄ×ÖÍ·
> Æ¥ÅäÒ»¸ö×ÖµÄ×Öβ
. Æ¥ÅäÈÎÒâµ¥¸öÕýÎÄ×Ö·û
[str] Æ¥Åä×Ö·û´® str ÖеÄÈÎÒâµ¥¸ö×Ö·û
[^str] Æ¥Åä²»ÔÚ×Ö·û´® str ÖеÄÈÎÒâµ¥¸ö×Ö·û
[a-c] Æ¥Åä´Ó a µ½ c Ö®¼äµÄÈÎÒ»×Ö·û
* Æ¥Åäǰһ¸ö×Ö·ûµÄ 0 ´Î»ò¶à´Î³öÏÖ
ºöÂÔÌØÊâ×Ö·ûµÄÌØÊ⺬Ò壬½«Æä¿´×÷ÆÕͨ×Ö·û

À©³äµÄÌØÊâ×Ö·û£º
×Ö·û ¹¦ÄÜ
+ ÖØ¸´Æ¥ÅäǰһÏî 1 ´ÎÒÔÉÏ
? ÖØ¸´Æ¥ÅäǰһÏî 0 ´Î»ò 1 ´Î
{j} ÖØ¸´Æ¥ÅäǰһÏî j ´Î
{j, } ÖØ¸´Æ¥ÅäǰһÏî j ´ÎÒÔÉÏ
{, k} ÖØ¸´Æ¥ÅäǰһÏî×î¶à k ´Î
{j, k} ÖØ¸´Æ¥ÅäǰһÏî j µ½ k ´Î
s | t Æ¥Åä s »ò t ÖеÄÒ»Ïî
(exp) ½«±í´ïʽ exp ×÷Ϊµ¥Ïî´¦Àí (linux֪ʶ±¦¿â)
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 2 ÌõÆÀÂÛ

  1. daowangooo ÓÚ 2006-10-13 11:46:47·¢±í:

    :0L

  2. xuanchengzi ÓÚ 2006-10-12 23:03:07·¢±í:

    ¶¥Ò»°Ñ£¬É³·¢