26.06.2015 Views

Steve Mansour sman@scruznet.com Neo Lee neo.lee@gmail.com ...

Steve Mansour sman@scruznet.com Neo Lee neo.lee@gmail.com ...

Steve Mansour sman@scruznet.com Neo Lee neo.lee@gmail.com ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

մ៨᧷ਭϥᩈơA Tao of Regular ExpressionsƢ<br />

file:///home/eagle/book/Linux/script/tao_regexps_zh.html<br />

մ៨᧷ਭϥᩈ<br />

ؑᛀƳ<strong>Steve</strong> <strong>Mansour</strong><br />

<strong>sman@scruznet</strong>.<strong>com</strong><br />

Revised: June 5, 1999<br />

(copied by jm /at/ jmason.org from http://www.scruz.net/%7esman/regexp.htm, after the original disappeared! )<br />

ᓟᢈƳ<strong>Neo</strong> <strong>Lee</strong><br />

<strong>neo</strong>.<strong>lee@gmail</strong>.<strong>com</strong><br />

2004৯10ഢ16ೃ<br />

ᘫಞႝؑಞ<br />

ᢈᓥைƳؑಞݿϛ৯кϡᨇƥಞϔ࠰᭔ఉೇী᧼ഭơϜᠳԟЃviˉsedᎋষԣሇЫᐾڔୡƢƥലᢈ<br />

ؿലၯؑಞርᢈƥஷ‏߰мඇሷκᱤ᭔ఉሇؑಞˊᰑϥظ᱇ේඇᨅЌ᭔ఉಞϔীयᏚ᭔ఉոᰑƥ<br />

Mansorᔌᐄƥၦƥ ϔണǼᢈᓥைǽሇ᪇թᢈᓥ៧Ԋሇᢪˊണऑಲᱤሇᯅርఉڔ<strong>Steve</strong><br />

ѼسԵϔಞƥϴظмڔᔌᐄˊ<br />

ሩ <br />

Сϣմ៨᧷ਭ<br />

ᘲҐ<br />

תᎢ<br />

ϔᐜơድࡆሇژᢣƢ<br />

Ƣથᡩሇᣳੋಞظơν‏ᰯޅ<br />

νٌষԣϔሇմ៨᧷ਭ<br />

Сϣմ៨᧷ਭ<br />

δϑմ៨᧷ਭƥीᅶൺጕาਭؚיδᏚϖሇδϑԚਭˊ࠰Оݿϛ࣯рሷκؚຈ᧔خભᓨς<br />

ᨅδဿƥν᧼ƥᑀ᧼δဿဿᐴϵϥَीਥبಅ࠲мνಕؚҋᅶǸǸνৱƥᨅᎺಞ፣ϴνᕜ‏ࠪ‏<br />

ᠽ੧ᨅЌࠪሇ៨᧷ਭԢँԵ᥎ൌᨄሮᎢתሇƥᓨςƥδೄѼଲ࣯рƥѼीᕜಚल᧪ᘨᓨς<br />

᭯ሇಞലࠨᄮষѸ؊ᒓޗՔթơᅲᖭՔƢࣶୄˊմ៨᧷ਭهጕಞലᒁ᧡ᧁхˉᏚơҐ<br />

Rogue Waveሇtools.h++Ƣˉᕫലষԣơӵawk/grep/sedƢ৶༂ሇƥᓨςӵMicrosoftሇVisual C++ᨅ<br />

ጕБІਭIDEϴਥ࣯Ͻˊ<br />

߰Ѓviϔሇಞലഠ௮᪇թሇҐ࠵ൌᡊմ៨᧷ਭሇᅶƥᑍλሇ፣ᗩϔջᅶδЌҐޗрय<br />

sedˉawkˉperlޗмظƥԢϔሇญઍሇҐ߉лൌϷԵሇƥν᧼࣯рຈ᧔Ԥڎgrepಞхᐇڔлڎ<br />

ޗмሷሷνٌষԣϔሇմ៨᧷ਭᨅδᗩƥԢϔണδЌظԢвմ៨᧷ਭሇᒁጫᢣᡐϔҋᅶˊѼڔ<br />

ռሇষԣϔҋᅶմ៨᧷ਭሇҐˊᨄണδϑԟЃviϔಞലഠ௮ڎлơsƢሇᎢתᢪᰁޗಞَҖᓣˊ<br />

մ៨᧷ਭ߰ኦ<br />

մ៨᧷ਭᅽδЌᨭڔδЌԈơ metacharactersƢᐵୄˊᨭׇஷ࠵लԵሇຄڔಚƥ<br />

ᓨԈմԣണႯሇ٢ϤƥрλᱤѕᑉϾᡊˊ<br />

ƥմ៨᧷ਭ"testing"ϔണׇ‎ሇ૮Ճλƥδϑմ៨᧷ਭሷκؚीδϑᨭሇඇϖˊҐתഡᎢޗ<br />

‏ˊ"‏"Testingיϖƥѫνᕜ‎123testing"ᎋ‏"ڔ"‏"testingיмظƥƥ࣯‎‎٢чѲԈ<br />

ᠳሻሇᅶ࡛մ៨᧷ਭƥኵሇᄮᡊԈഡᠳሇЀ૮ˊλ៨ղϽണሇԈڔन࣯рሇ<br />

δϑᎢቾሇఞᨕˊ<br />

1 of 7 2004৯12ഢ08ೃ 09:31


մ៨᧷ਭϥᩈơA Tao of Regular ExpressionsƢ<br />

file:///home/eagle/book/Linux/script/tao_regexps_zh.html<br />

Ԉ ఞᨕ<br />

tƥѫνיrootˊ ϖƳratˉrutˉrᨅЌיմ៨᧷ਭr.tˊҐϑתчѲי .<br />

ϖ"He'sי࠲ᕜ a weasel"ሇറैƥѫνᕜ ‏$‏մ៨᧷ਭweaselᑄˊҐי $<br />

weasels."ˊ ϖ"Theyי are a bunch of<br />

ϖ"Whenי࠲inᕜ in the course of human մ៨᧷ਭ^WhenҐ‏ˊδሇਥי ^<br />

events"ሇਥƥѫνᕜי"What and When in the"ˊ<br />

чଐಚሇчѲי࠲ᕜڇմ៨᧷ਭ.*ଐˊҐϥ֏ሇᩤϑ‏࣯ޗϑ࡛‎࠰0ୈי *<br />

‏ˊ‏<br />

\ ᨅਰᅶਇƥᅶൌयᨅղሇᨅЌԈѸᨭሇൌᨆיˊҐմ៨᧷ਭ\$<br />

ƥᓨνчѲဿיƥᓨνैƥᏚѨሇƥմ៨᧷ਭ\.ᅶൌؿᒼԈיᅶൌ<br />

ሇᨭˊ<br />

[ ]<br />

[c1-c2]<br />

[^c1-c2]<br />

ظˊ‏retיrutƥѫνڔratˉrotיմ៨᧷ਭr[aou]tˊҐϔሇчѲδϑؿஷי<br />

ƴчѲಚיмظ[‏մ៨᧷ਭ[0-9‎ᯋƥҐךሇ-ൌெࣽ‎ϔҋᅶᨉؿஷޗм<br />

ᨄظмցࣽ࠰ϑךᯋƥҐմ៨᧷ਭ[A-Za-z]ظмיчѲ࠵लԵຄˊذδϑᠳሇᅶ<br />

ǼఃᰑǽƥᠳיᰑϽ ெࣽךᯋϥሇǸǸϴीᣈሇ៧ᰴǸǸޗস᧵ሇஷ<br />

Ե࠵ണڔᰑϽ2ˉ6ˉ9‎יय ‏[‏մ៨᧷ਭ[^269A-ZƥҐ^‏ϥᯋҋᅶᎁδϑڔؿ<br />

‏ˊ‏ሇчѲຄϥ<br />

ϖ"forי࠲մ៨᧷ਭ\ƢˊҐڔơ\ \<<br />

wise"ϔሇ"the"ƥѫνᕜיϖ"otherwise"ϔሇ"the"ˊ༉ଐƳᨅϑԈνണሇ<br />

ᧁхሇˊ<br />

\( \) य \( ڔ \) ϥᯋሇ៨᧷ਭࣽϤϛǼᐵǽơgroupƢƥৰςयיᨅϑ៨᧷ਭሇұտδϑ<br />

мᅶظ‎9ϑƢƥ࣯рмұظ࠰ơδϑմ៨᧷ਭϔഡߨךϗ \1 տ\9 ሇؿൌਰᅶˊ<br />

| यύϑיോхᨆᨼ᧡ǼୈǽơOrƢ᧿ᎨˊҐմ៨᧷ਭ(him|her) "itי belongs to<br />

him"ڔ"it belongs to her"ƥѫνᕜי"it belongs to them."ˊ༉ଐƳᨅϑԈνണሇ<br />

ᧁхሇˊ<br />

9ˉ99ˉ999ᎋˊ༉ଐƳᨅϑי+‏մ៨᧷ਭ9‎ˊҐϥ֏ሇᩤϑ‏࣯ޗϑ࡛‎࠰1ୈי +<br />

Ԉνണሇᧁхሇˊ<br />

‏ˊ‏νണሇᧁхሇˊ༉ଐƳᨅϑԈϥ֏ሇᩤϑ‏࣯ޗ0ୈ1ϑ࡛‎י ?<br />

\{i\}<br />

\{i,j\}<br />

‏{\‏մ៨᧷ਭA[0-9]\{3‎ϥ֏ሇ៨᧷ਭࣽϤሇˊҐ‏࣯ޗƥᨅЌெࣽಚሩሇי<br />

יA123ˉA348ᎋƥѫνሇϖƥҐ"A"َᱤ࡛3ϑಚי࠲ᕜ<br />

A1234ˊᓨմ៨᧷ਭ[0-9]\{4,6\} ˊ༉ଐƳᨅϑᨉᑛሇчଐ4ϑˉ5ϑୈᓥ6ϑಚי<br />

Ԉνണሇᧁхሇˊ<br />

ơ༉ଐνׇஷಱƢˊәࣽണϑಞхtest.txtׇ٢мλϑתчѲי࠲ဿƥ࣯ᕜሇԈתഡᎢ<br />

ՔऑƳ<br />

he is a rat<br />

he is in a rut<br />

the food is Rotten<br />

I like root beer<br />

рظмҋᅶgrepڎлൌ༻ᢌрሇմ៨᧷ਭƥgrepڎлҋᅶմ៨᧷ਭؚऺᢌיெࣽಞхሇδ<br />

лڎˊ‏៨᧷ਭሇണ೪ዥൌיࠨƥৰयᖭळണδ<br />

grep r.t test.txt<br />

δϑrఉчѲיሇˊմ៨᧷ਭr.tי‏᧢test.txtಞхϔሇδϔᐇմ៨᧷ਭr.tƥৰ୧ޗ<br />

δϑఉδϑtˊм࣯यיಞхϔሇratڔrutƥᓨνᕜיRottenϔሇRotƥݿϛմ៨᧷ਭ<br />

‏[‏Ƣˊմ៨᧷ਭ[RrؿơಲஷᯋԈךຄƥਁᢜҋᅶलԵڔԵ࠵יलԵଓሇˊᠳٌ࠵<br />

ఉδϑtीᠳҋᅶᨅϑԵୈᓥलԵሇrఉчѲδϑ࠵δϑיrˊмƥᠳڔRי‏ٌ࠲ᕜ<br />

៨᧷ਭƳ[Rr].tˊ<br />

2 of 7 2004৯12ഢ08ೃ 09:31


մ៨᧷ਭϥᩈơA Tao of Regular ExpressionsƢ<br />

file:///home/eagle/book/Linux/script/tao_regexps_zh.html<br />

ᠳי᳨ሇᠳҋᅶୱơ^ƢǸǸ؞ϴشӟఠԗˊҐƥտtext.txtϔ᳨"he"୧<br />

יسᎁιሇtheƥмᠳҋᅶմ៨᧷ਭ^heƥ࣯‎י៨᧷ਭheƥѫᨅѕתᕜѕԌᅶᎢظሇƥѼ࠽<br />

ޗ᳨ᄕሇhˊ<br />

ണӈெࣽǼᰑϽĆĆĆיǽѕຈ᧔ऑ᧷տሩሇƥୱơ^Ƣᄕޗಲஷؿϔƥ࣯៨ዥ<br />

ǼఃᰑǽƥҐᠳיhe ƥѫఃᰑ֏ᱤt or sሇ૮પơϴीtheڔsheƢƥظмҋᅶƳ[^st]heˊ<br />

लԵሇƴڔԵ࠵ຄƥׇஷчѲי[‏մ៨᧷ਭ[A-Za-zᯋˊҐךϑ࠰ൌெࣽ‎ؿмҋᅶಲஷظ<br />

մ៨᧷ਭ[A-Za-z][A-Za-z]* мظԵୈᓥलԵƢˊၦрϴ࠵ຄơϑ࠰ຄَᱤఉ0ୈᓥδϑי<br />

ᅶԈ+ӟտٌඥሇЀ૮ƥϴीƳ[A-Za-z]+ ƥڔ[A-Za-z][A-Za-z]*ࣶԘᎋцˊѫᠳ༉ଐԈ+<br />

ৰνണմ៨᧷ਭሇጫሇˊԟЃᨅδဿظмᓣَᱤሇմ៨᧷ਭᢣ૮Ճˊ<br />

‎1000ሇँҐڔണ100‎יಧൊൌᦾϤƢˊأơ༉ଐҋᅶؿஷ࠵ƥᠳҋᅶיᠳெࣽႯࣽಚሇ<br />

ᨅϑޗˊ‏‎1َᱤ2ୈᓥ3ϑ0ሇาਭಚיмҋᅶƳ10\{2,3\}ƥᨅϑմ៨᧷ਭظ‎10000ƥڔᓨఃᰑ10‎<br />

‏{\,‏մ៨᧷ਭ0\{3‎ƥҐઐᆒᎁЁϑಚبሇҋᅶϔδϑണᅶሇԈ यיᖭळ3ϑᨉᑛሇ0ˊ<br />

ሇҐתᎢ<br />

‏ˊሇҐתᨅണδЌണк៨પሇˉຈ᧔Ꭲ<br />

vi лڎ<br />

Ѹᅶ<br />

:%s/ */ /g<br />

:%s/ *$//<br />

:%s/^/ /<br />

:%s/^[0-9][0-9]* //<br />

:%s/b[aeio]g/bug/g<br />

δϑୈᓥ࠰ϑፄඨഠ௮ϛδϑፄඨˊ<br />

ؚैሇണፄඨˊ<br />

‏ˊ‏κ֨ԗδϑፄඨ࠽δޗ<br />

‏ˊ‏᳨ሇണಚ‏ؚ‏<br />

यണሇbagˉbegˉbigڔbogಅϛbugˊ<br />

:%s/t\([aou]\)g/h\1t/g यണtagˉtogڔtugթռಅϛhatˉhotڔhugơ༉ଐᅶgroupሇᅶڔҋᅶ\1ਰ<br />

ᅶ֏ᱤיሇƢˊ<br />

ϔᐜሇҐơድࡆሇژᢣƢ<br />

Ґ1<br />

यണಲfoo(a,b,c)ሇँҐಅϛfoo(b,a,c)ˊᨅaˉbڔcظмчѲటҖᑉಲfoo()ሇಚˊϴीᢪ<br />

рᠳँᄕᨅඥሇᦾ௮Ƴ<br />

ϥ֏ ϥَ<br />

foo(10,7,2)<br />

foo(x+13,y-2,10)<br />

foo(7,10,2)<br />

foo(y-2,x+13,10)<br />

foo( bar(8), x+y+z, 5) foo( x+y+z, bar(8), 5)<br />

ᄕᨅδᵏƳ‏ँ࠲лᕜڎλᱤᨅോഠ௮<br />

:%s/foo(\([^,]*\),\([^,]*\),\([^)]*\))/foo(\2,\1,\3)/g<br />

ಚሇѬϔሇιϑؿሇஷ‏࣯ڔ()‏ᡥр࣯୧ಖൌ֨мթˊԵᨅϑ៨᧷ਭሇ߰ലથfooޗᄕ<br />

ᒳˊᎁδϑಚᅶᨅϑ៨᧷ਭൌռሇƳƳ\([^,]*\)ƥрظмЭّൌթ࣯Ƴ<br />

[^,] ᰑϽᨬؿϥሇчѲ<br />

[^,]*<br />

\([^,]*\)<br />

ؿϑᱡᨬ࠰‎0ୈᓥ<br />

ϥَሇഠ௮าਭ៨᧷ਭϔਰᅶ࣯‎ޗмظඓᡫϛ\1ƥᨅඥؿयᨅЌᱡᨬ<br />

3 of 7 2004৯12ഢ08ೃ 09:31


մ៨᧷ਭϥᩈơA Tao of Regular ExpressionsƢ<br />

file:///home/eagle/book/Linux/script/tao_regexps_zh.html<br />

,(\*[,^])\ ᩤ᪇թᠳඓᡫൌмؿƥৰςᱡᨬؿَᱤδϑᨬؿϑᱡᨬ࠰рտ0ୈᓥ<br />

َࠩᅶˊ<br />

ᄕޗெδϑҋᅶմ៨᧷ਭয়ᠶ᭯ᢥሇഡ҅സˊϛСϣрᠳҋᅶ[^,]*ᨅඥሇδϑ៨᧷ਭƥᓨ<br />

νഛ֨ᎢתርఉሇԵƥҐƳ.*ƥൌיᎁδϑಚځƸᡷрҋᅶาਭ.*ൌי<br />

ϖ"10,7,2"ƥ࣯ਁᢜי"10,"ᨄ"10,7,"ƸϛϽᡊՂᨅϑύϤપơambiguityƢƥմ៨᧷ਭᠸࣽδைၯ<br />

ഡᮿሇϖൌƥޗκᱤሇҐϔी"10,7,"ƥ೪ၦᨅඥीϽύϑಚᓨνрഭഫሇδϑˊмƥ<br />

рᠳҋᅶ[^,]*ൌਿցئᎁδϑᨬؿϥ֏ሇ᪇թˊ<br />

ᨅϑ៨᧷ਭрীᑀթտϽƳfoo(\([^,]*\)ƥᨅδظмᎢתሇᓟᢈϛǼѼտfoo(ीԢَርտᎁ<br />

δϑᨬؿϥ֏ሇ᪇թඓᡫϛ\1ǽˊၦَрҋᅶٌඥሇ֦ඓᡫᎁЁϑಚϛ\2ˊनᎁιϑಚሇඓᡫ<br />

ಲϴδඥƥسрᠳᐇണሇርտؼஷؿˊрৰണᠳؚᐇᎁιϑಚƥݿϛр<br />

‏()‏fooޗಚሇfoo()ಲᢹᅶƥഠ௮ᩤЌണιϑ‏ؚسұр࠲ν᱇ᠳᢹಜ࣯ሇѬᒳƥѫᨅඥሇาਭᕜ<br />

δϑơoveroadingƢಲᨅጕኵሇาਭਖ਼ਖ਼ຈ᧔ұᰔሇˊၦَƥޗഠ௮᪇թƥрտfoo<br />

()ሇनਁँҐƥၦَջᅶඓᡫ࡛ሇ᪇թᨆഠ௮ƥሇᎁδڔᎁЁϑಚБ௮Ѭᒳˊ<br />

Ґ2<br />

әᡷണδϑCSVơ<strong>com</strong>ma separated valueƢಞхƥᱤണδЌр᱇ᠳሇҴૉƥѫඨਭണᯅƥሩ֏<br />

ޗрৌഫᡬᨅЌಚ௳ಱᐵᐸƥмҤޗƥٍᒓԵƥᩨಈᒁኇƥᄕ‏ٍƥԚ‏ٍಚ௳ሇղƳ<br />

ϴीᢪƥрᠳᢹಜղ‏ˊٍƥٍᒓԵ-ᩨಈᒁኇƥԚ‏ٍрሇൺϑᧁхϔҋᅶƥ᱇ᠳሇඨਭϛƳ<br />

ڔᱤണчѲፄඨơׇஷፄඨ‏َ֏ؿᨬاƥрሇᧁхνᕜఉذˊ‏ৰύϑղൌୄδϑಱղىƥᨄᠳ<br />

ց៨Ƣмрᨄᠳؚᨬؿ֏َሇണፄඨˊ<br />

ᨅണՔрᄕޗሇಚ௳Ƴ<br />

Bill Jones, HI-TEK Corporation , CA, 95011<br />

Sharon <strong>Lee</strong> Smith, Design Works Incorporated, CA, 95012<br />

B. Amos , Hill Street Cafe, CA, 95013<br />

Alexander Weatherworth, The Crafts Store, CA, 95014<br />

...<br />

Ƴᨅϑඥ‏ୄبрৌഫ࣯‎<br />

Bill Jones,CA 95011,HI-TEK Corporation<br />

Sharon <strong>Lee</strong> Smith,CA 95012,Design Works Incorporated<br />

B. Amos,CA 95013,Hill Street Cafe<br />

Alexander Weatherworth,CA 95014,The Crafts Store<br />

...<br />

‏ˊ‏ৰղƥᎁЁϑᅶൌؚፄඨىڔрयᅶύϑմ៨᧷ਭൌᡊՂᨅϑᯅˊᎁδϑጥ֬ղ<br />

λᱤीᎁδϑഠ௮ڎлƳ<br />

:%s/\([^,]*\),\([^,]*\),\([^,]*\),\(.*\)/\1,\3 \4,\2/<br />

ϥ֏ሇؿᎁδϑᨬƳ\([^,]*\)ƥיƢᅶᨅϑ៨᧷ਭൌ‏ٍᨅሇಲҐ1߰ലδඥƥᎁδϑղơ<br />

‎3ƥᓨഡَδϑ‏\ڔᅶٌඥሇಲඓᡫϛ\2‎ٍᒓԵڔٍऑᅶ\1ඓᡫλൌˊԚ‏ٍƥᓨണ<br />

ᅶ\(.*\)ൌיơ"יണርտറ"Ƣˊഠ௮᪇թմਰᅶκᱤඓᡫሇᩤЌऑൌᨆᨲˊ<br />

λᱤᨅϑഠ௮ڎлմᅶൌؚᰑፄඨƳ<br />

:%s/[ \t]*,[ \t]*/,/g<br />

рᨄթᡊൌሷƳ[ \t]יፄඨ/ց៨ƥ[ \t]* ‏]‏ϑፄඨ/ց៨ƥ࠰0ୈי \t]*,י0ୈ࠰ϑፄඨ/ց៨<br />

َᱤ֨δϑᨬؿƥഡَƥ[ \t]*,[ \t]*י0ୈ࠰ϑፄඨ/ց៨ఉδϑᨬؿఉ0ୈ࠰ϑፄඨ/ց៨<br />

ᨢሇgظᨅрҋᅶϽᑄैሇ‏ˊؿሇрտሇണωᠲഠ௮ୄδϑᨬתഠ௮᪇թƥрᎢޗˊ‏<br />

ಚƥᨅ៨ዥޗϔनണיሇϖ୭ഠ௮ơᓨνᒢሲሇسഠ௮ᎁδϑיϖƢˊ<br />

Ґ3<br />

4 of 7 2004৯12ഢ08ೃ 09:31


մ៨᧷ਭϥᩈơA Tao of Regular ExpressionsƢ<br />

file:///home/eagle/book/Linux/script/tao_regexps_zh.html<br />

ƳሇႜಯࠪᄕƥҐ࠰әᡷണδϑ<br />

Billy tried really hard<br />

Sally tried really really hard<br />

Timmy tried really really really hard<br />

Johnny tried really really really really hard<br />

ᓨѼ"really"ˉ"really really"ƥмؠчଐಚᨉᑛᄕሇ"really"ϖ௮ୄδϑᎢתሇ"very"ơsimple<br />

is good!ƢƥᩤϣмλڎлƳ<br />

:%s/\(really \)\(really \)*/very /<br />

Ƴ‏ୄبीѕκᨕሇಞല<br />

Billy tried very hard<br />

Sally tried very hard<br />

Timmy tried very hard<br />

Johnny tried very hard<br />

࠰1ϑୈי \)* \)\(really ϑᨉᑛሇ"really࠰0ୈי*(\‏ "ơ༉ଐᑄैണϑፄඨƢƥᓨ\(really ៨᧷ਭ\(really<br />

ϑᨉᑛሇ"really "ँҐˊ<br />

ƢથᡩሇᣳੋಞظơνሇҐ‏ᰯޅ<br />

Coming soon.<br />

νٌষԣϔሇմ៨᧷ਭ<br />

OKƥѼীᑀՋࠩҋᅶREơregular expressionsƥմ៨᧷ਭƢƥѫѼৰՋࠩҋᅶviˊмƥޗᨅр<br />

ךᄕሇؤᕜظνٌጫϥᯋҋᅶREޗƥᨄѕᑄδλѼذˊԢвষԣϔҋᅶREሇҐޗᑉδЌ<br />

ռˊ<br />

ၦƥѼϴظмޗVisual C++ᒁ᧡ݥϔҋᅶREˊᨢஶEdit->Replaceƥၦَᨢஶ"Regular expression"ᨢஶ<br />

නƥFind What᧢ԗනनਁκᱤЫᐾሇviڎл:%s/pat1/pat2/gϔሇpat1᪇թƥᓨReplace᧢ԗනनਁpat2᪇<br />

gᨢƥѼᠳҋᅶReplaceڔއթˊѫƥϛϽ੧տviሇ୭ᘲ AllୈᓥሇୡষFind Next and Replace<br />

ơᢈᓥைƳቹᩈϛ۾ണОᴃ੯ᧁംϽٟƥᝇၦVCϔظмᨢϔδϑᘲއሇಞലƥၦَޗԢϔ୭ഠ௮ƥ<br />

ѫϥν࠲viᩤϣဤ༰ڔԤᰳƢˊ<br />

sed<br />

SedStream EDitorሇᒓԵƥUnixλয়ᅶሇ߰ЃಞхڔᎫᩈሇᒁ᧡ষԣƥظмޗୡϔ੧տԟЃsedሇ<br />

ᢝᐷҴૉˊ<br />

ಞ‏ྶبӟprice.txtሇಞхˊ༉ଐᨅЌᒁ᧡ৰνѕಅشᄮδϑࠨޗᨅδЌണᥗሇsedᕫലƥәࣽр<br />

хƥsedسࠨᄮྶಞхሇδৰᑄ೪ዥޗඓՋ᧢ϔơၦऑҋᅶّࣽൌࣽցƢƳ<br />

sedᕫല ఞᨕ<br />

sed 's/^$/d' price.txt<br />

sed 's/^[ \t]*$/d' price.txt<br />

sed 's/"//g' price.txt<br />

ոᰑണፄ<br />

‎٢ፄඨୈᓥց៨ሇ‏ׇسոᰑണ<br />

ؿոᰑണਰ<br />

awk<br />

ୡϔ੧տԟЃawkሇᢝᐷҴޗмظˊ‏ᄮࠨڔмᅶൌनಞലಚ௳ᨆࠪሇթظawkδጕᒁጫᢣᡐƥ<br />

5 of 7 2004৯12ഢ08ೃ 09:31


մ៨᧷ਭϥᩈơA Tao of Regular ExpressionsƢ<br />

file:///home/eagle/book/Linux/script/tao_regexps_zh.html<br />

ૉˊᨅϑخભሇٍ࣯ѸᓥрሇሇᒓԵơAhoƥWeinbergerڔKernighanƢˊ<br />

Languageϔണ࠰࡛ሇawkሇҐƥν KernighanሇϷTheڔAhoƥWeinbergerޗ AWK Programming<br />

ᠳᡥλᱤᨅЌ੯νᥙᩈሇᕫലҐᰊցѼनawkਿ࠵ᕜ֤ሇᄮᡊˊрٌඥәࣽрनprice.txtಞхᨆ<br />

ࠨᄮƥsedδඥƥawkϴسᑄ೪ዥޗᐹ፨κˊ<br />

awkᕫല ఞᨕ<br />

awk '$0 !~ /^$/' price.txt<br />

awk 'NF > 0' price.txt<br />

awk '$2 ~ /^[JT]/ {print $3}' price.txt<br />

awk '$2 !~ /[Mm]isc/ {print $3 + $4}' price.txt<br />

awk '$3 !~ /^[0-9]+\.[0-9]*$/ {print $0}'<br />

price.txt<br />

awk '$2 ~ /John|Fred/ {print $0}' price.txt<br />

ոᰑണፄ<br />

awkϔδϑഛ࡛ሇոᰑണሇ֦<br />

ሇϔሇᎁιϑ࠽'J'ୈᓥ'T'୧ണᎁЁϑ୧<br />

<br />

νׇ٢'Misc'ୈᓥ'misc'ሇƥ୧नണᎁЁϑ<br />

Ƣơәࣽϛಚڔᎁ4ղሇڔᎁ3‎<br />

୧ണᎁιϑνಚሇƥᨅಚெd.d<br />

ୈᓥdᨅඥሇੋਭƥԢϔd0տ9ሇчѲಚ<br />

ಜׇ٢'John'ୈᓥ'Fred'մ୧ᎁЁϑ<br />

grep<br />

grepδϑᅶൌޗδϑୈᓥ࠰ϑಞхୈᓥ᧢ԗ༴ϔҋᅶREᨆඇሇጫˊ࣯ሇnameᒁጫᢣᡐظмᅶൌ<br />

नಞхڔᎫᩈᨆࠨᄮˊظмޗୡϔ੧տԟЃgrepሇࣶಜҴૉˊᨅϑٌඥخભሇٍൌྶЃviሇδ<br />

ϑڎлƥg/re/pƥଐથglobal regular expression printˊ<br />

ƥၦٍَƥၦؿδϑᨬ‏֨ಞхphone.txtϔׇ٢мλሇಞലƥǸǸԢඨਭޗϔрәࣽ‎λᱤሇҐ<br />

َδϑց៨ƥၦَᆀᢔؿኇƳ<br />

Francis, John 5-3871<br />

Wong, Fred 4-4123<br />

Jones, Thomas 1-4122<br />

Salazar, Richard 5-2522<br />

grepڎл ఞᨕ<br />

grep '\t5-...1' phone.txt<br />

grep '^S[^ ]* R' phone.txt<br />

grep '^[JW]' phone.txt<br />

grep ', ....\t' phone.txt<br />

grep -v '^[JW]' phone.txt<br />

grep '^[M-Z]' phone.txt<br />

grep '^[M-Z].*[12]' phone.txt<br />

ണᆀᢔؿኇм5ਥ࠽м1ᑄሇ୧ൌƥ༉ଐց៨ᅶ\t៨ዥ<br />

ሇ<br />

ሇ࠽мR୧‏ٍڔ࠽мS୧ണ୧<br />

୧ണਥ࠽JୈᓥWሇ<br />

୧ണ4ϑሇƥ༉ଐց៨ᅶ\t៨ዥሇ<br />

୧ണνмJୈᓥWਥ࠽ሇ<br />

୧ണሇਥ࠽MտZϥᯋчδሇ<br />

ኇᑄै1ୈᓥ2‎ؿؿƥৰςဿMտZϥᯋчδ࠽ሇਥണ୧<br />

ሇ<br />

egrep<br />

ಞхޗϔрәࣽ‎ˊλᱤሇҐሇԈ࠰ሇմ៨᧷ਭϔഛ‏࣯ޗegrepgrepሇδϑ୮ॖႝലƥ࣯‎<br />

ƥၦٍَƥၦَδϑց៨ƥၦَᆀᢔؿδϑᨬ‏֨phone.txtϔׇ٢мλሇಞലƥǸǸԢඨਭ<br />

ኇƳؿ<br />

Francis, John 5-3871<br />

Wong, Fred 4-4123<br />

Jones, Thomas 1-4122<br />

Salazar, Richard 5-2522<br />

6 of 7 2004৯12ഢ08ೃ 09:31


մ៨᧷ਭϥᩈơA Tao of Regular ExpressionsƢ<br />

file:///home/eagle/book/Linux/script/tao_regexps_zh.html<br />

egrep <strong>com</strong>mand Description<br />

egrep '(John|Fred)' phone.txt<br />

egrep 'John|22$|^W' phone.txt<br />

egrep 'net(work)?s' report.txt<br />

JohnୈᓥFredሇണׇ٢ٍ‎୧<br />

୧ണׇ٢John ୈᓥм22ᑄୈᓥмWሇ<br />

Эreport.txtϔտണׇ٢networksୈᓥnetsሇ<br />

մ៨᧷ਭᢣ૮Ճ<br />

. ࠏлୈᄔڎ<br />

^ ] [ $ ? \} \{ \) \( + | ) ( vi X X X X X<br />

Visual C++ X X X X X<br />

awk X X X X X X X X<br />

sed X X X X X X<br />

Tcl X X X X X X X X X<br />

ex X X X X X X<br />

grep X X X X X X<br />

egrep X X X X X X X X X<br />

fgrep X X X X X<br />

perl X X X X X X X X X<br />

viഠ௮ڎлᎢЫ<br />

Viሇഠ௮ڎлƳ<br />

Ԣϔ<br />

:ranges/pat1/pat2/g<br />

: ᨅViሇڎл୭ᆊᱤˊ<br />

range ڎл୭ᘲއሇெࣽƥظмҋᅶህթؿơ%Ƣ៨ዥണƥҋᅶဿơ.Ƣ៨ዥ֏ƥҋ<br />

‎10,20៨ዥᎁ10տ20ƥ.,$៨ዥ֏ƥҐؿмҋᅶظơ$Ƣ៨ዥഡَδˊѼᨄؿᅶᒼԈ<br />

տഡَδƥ.+2,$-5៨ዥ֏َύርտԘಞሇӅಚᎁЈƥᎋᎋˊ<br />

s ៨ዥԢَδϑഠ௮ڎлˊ<br />

‏ˊҐߴ࠵ᨅᠳඇሇδϑմ៨᧷ਭƥᨅᎺಞ፣ϔണδ pat1<br />

‏ˊҐߴ࠵ሇาਭሇմ៨᧷ਭƥᨅᎺಞ፣ϔണδ‏ୄبϖיᨅৌഫ pat2<br />

g יഠ௮ϔᎁδϑسሇϖᨆƥٞմմיᨢඓƥᨅϑඓ៨ዥഠ௮यनϔϑظ<br />

ϖˊ<br />

ᒧκണ࠰viሇޗᐰୡƥѼظмᯅврмᚊ੧ഛࣶ֨ಜሇҴૉˊ<br />

‏[‏տϜݽ]‏<br />

7 of 7 2004৯12ഢ08ೃ 09:31

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!