1 ³W«hªí¹F¦¡ (Regular Expressions)

³W«hªí¹F¦¡¬O¤@²Õ¦r²Å¶°¦Xªº´y­z¡C³o­Ó´y­z¥i¥H¥Î¨Ó·j¯Á¤@½g¤å³¹¡A´M§ä¤@¬q²Å¦X§Ú­Ì¥Î³W«hªí¹F¦¡´y­zªº¤å¦r¡C³W«hªí¹F¦¡Ãþ¦ü©ó shell ªº³q°t²Å (shell wildcards) ¡]¨£²Ä 6.6 ­¶²Ä6.6 ¸`¡^¡A¦ý¬O¥¦§ó½ÆÂø¡A¥\¯à¤]§ó±j¤j¡C

¤@¬q³W«hªí¹F¦¡¬O¥Ñ¤å¦r©M Åܦr²Å (metacharacters) ²Õ¦¨ªº¡C¤@­ÓÅܦr²Å´N¬O¤@­Ó¦r²Å¦ý¬O¦³¯S®íªº·N«ä¡CÅܦr²Å¥]¬A¡G. * [] - \^ $¡C

¦pªG¤@¬q³W«hªí¹F¦¡¥u§t¦³¤å¦r¡]¨S¦³Åܦr²Å¡^¡A¨º¥¦´N¬Û¹ïÀ³¨º¨Ç¤å¦r¡C¨Ò¦p³W«hªí¹F¦¡ ``my regular expression'' ´N¤Ç¹ï ``my regular expression''¡A¶È¦¹¦Ó¤w¡C³W«hªí¹F¦¡¤@¯ë¬O¤j¤p¼g±Ó·Pªº¡C

±z¥i¥H¥Î©R¥O egrep Åã¥Ü¤@­ÓÀɮפ¤©Ò¦³¤Ç¹ï¤@­Ó³W«hªí¹F¦¡ªº¦æ¡C»yªk¬O¡G

egrep 'regexp' filename1 ...
¨ä¤¤ªº³æ¤Þ¸¹¤£¬O©Ò¦³±¡ªp¤U³£»Ý­nªº¡A¦ý³Ì¦n¥[¤W¡C

¨Ò¦p¡A­n§ä¨ì GPL ùةҦ³§t¦³ GNU ³o­Ó³æµüªº¦æ¡AÁä¤J¡G

egrep 'GNU' /usr/doc/copyright/GPL
egrep ·|§â¨º¨Ç¦æ¦L¦b¼Ð·Ç¿é¥Xªº¡C ¦pªG±z·Q­n©Ò¦³§t¦³ freedom «á¸ò¤@¨Ç¨ä¥¦ªº¦rµM«á¦A¸ò GNU ªº¦æ¡A¥i¥H¥Î©R¥O¡G

egrep 'freedom.*GNU' /usr/doc/copyright/GPL
³o¨àªº . ¬O«ü¡u©Ò¦³¦r²Å¡v¡A¦Ó * «ü¡u0 ©Î¥H¤W­Ó«e­±ªº¨º­ÓªF¦è¡v¡A¦X°_¨Ó´N¬O¡u¹s©Î¤@­Ó¥ô·Nªº¦r²Å¡v¡A¦]¦¹ .* °ò¥»¤W¹ïÀ³´X¥G©Ò¦³ªº¤å¦r¡Cegrep ¹ï¤Ç¹ï¤è¦¡¬O¥H¦æ¬°³æ¦ìªº¡A©Ò¥H¤Ç¹ï¥Xªº freedom ©M GNU ¥²¶·¦b¦P¤@¦æ¡C

³oùجO¤@­Ó¹ï³W«hªí¹F¦¡¤¤ªºÅܦr²Åªº¤@­ÓÂk¯Ç¡G

.
¹ïÀ³¥X´«¦æ²Å (newline) ¥H¥~ªº©Ò¦³³æ¤@¦r²Å¡C
*
¹ïÀ³ 0 ©Î¥H¤W­Ó«e­±¨º­ÓªF¦è¡C¤ñ¦pªí¹F¦¡ a* ¹ïÀ³¹s©Î¦h­Ó¤p¼g a¡A¦Ó .* ¹ïÀ³¹s©Î¦h­Ó¥ô·N¦r²Å¡C
[¦r²Å¦r²Å¦r²Å]
¬A¸¹¤º¥²¶·§t¦³¤@­Ó©Î¥H¤Wªº¦r²Å¡A¾ã­Ó¬A¸¹ªí¹F¦¡¥u¹ïÀ³µ¹¥Xªº¦r²Å¶°¦X¤¤ªº¤@­Ó¦r²Å¡C¨Ò¦p [abc] ¹ïÀ³¤@­Ó a¡A¤@­Ó b¡A©ÎªÌ¤@­Ó c¡Q¥¦¤£¹ïÀ³ 0 ¦r²Å¡A¤]¤£¹ïÀ³³o¤T­Ó¦r²Å¥H¥~ªº¥ô¦ó¦r²Å¡C
^
§â±zªº·j¬d­­¨î¦b¨C¦æªº¶}ÀY¡Cªí¹F¦¡ ^The ¹ïÀ³¤@­Ó¦b¦æ­ºªº The¡Q¦b³o­Ó The «e­±¤£¯à¦³ªÅ®æ©ÎªÌ¥ô¦ó¨ä¥Lªº¤å¦r¡C¦pªG±z­n¤¹³\¦³«e­±¦³ªÅ®æ¡A±z¥i¥H¥Îªí¹F¦¡ ^*The ¨Ó¤¹³\«e­±¦³ 0 ©Î¦h­ÓªÅ®æ¡C
$
§â·j¯Á­­¨î¦b¦æ§À¡Cend$ ­n¨D¤å¦r end ¥X²{¦b¤@¦æªº³Ì«á¡A«á­±¨S¦³ªÅ®æ©Î¨ä¥¦¡C
[^¦r²Å¦r²Å]
³o­Óªí¹FÄA­Ë¤@­Ó¬A¸¹¦r²Åªí¹F¦¡¡A§Y [^abc] ¹ïÀ³©Ò¦³°£¤F a¡Bb¡Bc ¥H¥~ªº³æ¤@¦r²Å¡C
[¦r²Å-¦r²Å]
±z¥i¥H¦b¬A¸¹ªí¹F¦¡ùØ¥]§t¤@­Ó½d³ò¡C­n¹ïÀ³©Ò¦³¤p¼g¦r¥À¡A¨Ï¥Î [a-z]¡C¨ä¶¡¥i¥H¨Ï¥Î¦h­Ó½d³ò¡A¨Ò¦p¹ïÀ³«e¤T­Ó©M«á¤T­Ó­^¤å¦r¥À¡A¨Ï¥Î [a-cx-z]¡C¹ïÀ³©Ò¦³­^¤å¤j¤p¼g¦r¥À¡A¨Ï¥Î [a-zA-Z]¡C±z¥i¥H§â½d³ò¡A³æ­Ó¦r¥À¡A¥H¤Î ^ Åܦr²Å²V¥Î¡A¤ñ¦p [^a-zBZ] ¹ïÀ³¡u°£¤F¤@­Ó¤p¼g¦r¥À¡A¤j¼g B¡A¤j¼g Z ¥H¥~ªº©Ò¦³³æ¤@ªF¦è¡v¡C
()
±z¥i¥H¥Î¶ê¬A¸¹§â¤@³¡¤Àªí¹F¦¡µ²¦¨¤@²Õ¡A´N¹³¤@¯ëªº¼Æ¾Çªí¹F¦¡¤@¼Ë¡C
|
| ªº·N«ä¬O¡u©ÎªÌ¡v(or)¡C±z¥i¥H¥Î¥¦¨Ó´£¨Ñ¤@¨t¦Cªº¥i¿ïªí¹F¦¡¡C¤@¯ë¥i¿ïªºªí¹F¦¡·|¥Î¶ê¬A¸¹¤À¶}¡A¹³¡Gc(ad|ab|at) ¹ïÀ³ªº¬O cad ©Î cab ©Î cat¡C¦pªG¨S¦³¶ê¬A¸¹¡A«h¹ïÀ³ªº´N¦¨¤F cad ©Î ab ©Î at ¤F¡Gcad|ab|at¡C
\
³o­ÓÅܦr²Å°k²æ¥ô¦ó¤@­Ó¯S®í¦r²Å¡C¦pªG±z·Q­n·j¯Á * ³o­Ó¦r¡A±z»Ý­n¥Î \*¡C³o­Ó±×§þªº·N«ä¬O©¿²¤ * ªº¯S®í·N«ä¡C
³oùجO¤@¨Ç½d¨Ò¡AÅý±z§ó¦nªº´x´¤³W«hªí¹F¦¡ªº¥Îªk¡G
c.pe
¹ïÀ³ cope¡Bcape¡Bcaper¡C
c\ .pe
¹ïÀ³ c.pe¡Bc.per¡C
sto*p
¹ïÀ³ stp¡Bstop¡Bstoop¡C
car.*n
¹ïÀ³ carton¡Bcartoon¡Bcarmen¡C
xyz.*
¹ïÀ³ xyz ©M¥¦«á­±¸òªº©Ò¦³ªF¦è¡A¦³¨Ç¤u¨ã¡A¨Ò¦p egrep¡A¥u¹ïÀ³¨ì¨º¤@¦æµ²§ô¬°¤î¡C
^The
¹ïÀ³¤@¦æ¶}ÀYªº The¡C
atime$
¹ïÀ³¤@¦æµ²§Àªº atime¡C
^Only$
¹ïÀ³¤@­Ó¥u§t¦³ Only ¤@­Ó¦rªº¦æ¡A¨S¦³ªÅ®æ¡A¨S¦³¨ä¥¦¦r²Å¡A§Oªº¤°»ò³£¨S¦³¡A´N¤@­Ó Only¡C
b[aou]rn
¹ïÀ³ barn¡Bborn¡Bburn¡C
Ver[D-F]
¹ïÀ³ VerD¡BVerE¡BVerF¡C
Ver[^0-9]
¹ïÀ³¤@­Ó Ver «á­±¸ò¥ô¦ó«D¼Æ¦rªºªF¦è¡C
the[ir][re]
¹ïÀ³ their¡Btherr¡Bthere¡Btheie¡C
[A-Za-z][A-Za-z]*
¹ïÀ³¥ô¦ó¥u§t¦³­^¤å¦r¥Àªº³æµü¡A¨Ã¥B³Ì¤Ö¦³¤@­Ó¦r¥À¡A¤£¹ïÀ³¼Æ¦r©ÎªÅ®æ¡C


John Goerzen / Ossama Othman / Debian ¤¤¤å­p¹º