1 ³W«hªí¹F¦¡ (Regular Expressions)
³W«hªí¹F¦¡¬O¤@²Õ¦r²Å¶°¦Xªº´yz¡C³oÓ´yz¥i¥H¥Î¨Ó·j¯Á¤@½g¤å³¹¡A´M§ä¤@¬q²Å¦X§Ú̥γW«hªí¹F¦¡´yzªº¤å¦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¡An§ä¨ì GPL ùةҦ³§t¦³ GNU ³oÓ³æµüªº¦æ¡AÁä¤J¡G
-
- egrep 'GNU' /usr/doc/copyright/GPL
egrep ·|§â¨º¨Ç¦æ¦L¦b¼Ð·Ç¿é¥Xªº¡C
¦pªG±z·Qn©Ò¦³§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±zn¤¹³\¦³«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³ò¡Cn¹ïÀ³©Ò¦³¤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·Qn·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¹º