¡¡¡¡1. grep¼ò½é
¡¡¡¡grep £¨global search regular expression(RE) and print out the line,È«ÃæËÑË÷ÕýÔò±í´ïʽ²¢°ÑÐдòÓ¡³öÀ´£©ÊÇÒ»ÖÖÇ¿´óµÄÎı¾ËÑË÷¹¤¾ß£¬ËüÄÜʹÓÃÕýÔò±í´ïʽËÑË÷Îı¾£¬²¢°ÑÆ¥ÅäµÄÐдòÓ¡³öÀ´¡£UnixµÄgrep¼Ò×å°üÀ¨grep¡¢egrepºÍfgrep¡£egrepºÍfgrepµÄÃüÁîÖ»¸úgrepÓкÜС²»Í¬¡£egrepÊÇgrepµÄÀ©Õ¹£¬Ö§³Ö¸ü¶àµÄreÔª×Ö·û£¬ fgrep¾ÍÊÇfixed grep»òfast grep£¬ËüÃǰÑËùÓеÄ×Öĸ¶¼¿´×÷µ¥´Ê£¬Ò²¾ÍÊÇ˵£¬ÕýÔò±í´ïʽÖеÄÔª×Ö·û±íʾ»ØÆä×ÔÉíµÄ×ÖÃæÒâÒ壬²»ÔÙÌØÊâ¡£linuxʹÓÃGNU°æ±¾µÄgrep¡£Ëü¹¦ÄܸüÇ¿£¬¿ÉÒÔͨ¹ý-G¡¢-E¡¢-FÃüÁîÐÐÑ¡ÏîÀ´Ê¹ÓÃegrepºÍfgrepµÄ¹¦ÄÜ¡£
¡¡¡¡grepµÄ¹¤×÷·½Ê½ÊÇÕâÑùµÄ£¬ËüÔÚÒ»¸ö»ò¶à¸öÎļþÖÐËÑË÷×Ö·û´®Ä£°å¡£Èç¹ûÄ£°å°üÀ¨¿Õ¸ñ£¬Ôò±ØÐë±»ÒýÓã¬Ä£°åºóµÄËùÓÐ×Ö·û´®±»¿´×÷ÎļþÃû¡£ËÑË÷µÄ½á¹û±»Ë͵½ÆÁÄ»£¬²»Ó°ÏìÔÎļþÄÚÈÝ¡£
¡¡¡¡grep¿ÉÓÃÓÚshell½Å±¾£¬ÒòΪgrepͨ¹ý·µ»ØÒ»¸ö״ֵ̬À´ËµÃ÷ËÑË÷µÄ״̬£¬Èç¹ûÄ£°åËÑË÷³É¹¦£¬Ôò·µ»Ø0£¬Èç¹ûËÑË÷²»³É¹¦£¬Ôò·µ»Ø1£¬Èç¹ûËÑË÷µÄÎļþ²»´æÔÚ£¬Ôò·µ»Ø2¡£ÎÒÃÇÀûÓÃÕâЩ·µ»ØÖµ¾Í¿É½øÐÐһЩ×Ô¶¯»¯µÄÎı¾´¦Àí¹¤×÷¡£
¡¡¡¡2. grepÕýÔò±í´ïʽԪ×Ö·û¼¯£¨»ù±¾¼¯£©
¡¡¡¡^
¡¡¡¡Ãª¶¨ÐеĿªÊ¼ È磺'^grep'Æ¥ÅäËùÓÐÒÔgrep¿ªÍ·µÄÐС£
¡¡¡¡$
¡¡¡¡Ãª¶¨ÐеĽáÊø È磺'grep$'Æ¥ÅäËùÓÐÒÔgrep½áβµÄÐС£
¡¡¡¡Æ¥ÅäÒ»¸ö·Ç»»ÐзûµÄ×Ö·û È磺'gr.p'Æ¥Åägrºó½ÓÒ»¸öÈÎÒâ×Ö·û£¬È»ºóÊÇp¡£
¡¡¡¡*
¡¡¡¡Æ¥ÅäÁã¸ö»ò¶à¸öÏÈǰ×Ö·û È磺'*grep'Æ¥ÅäËùÓÐÒ»¸ö»ò¶à¸ö¿Õ¸ñºó½ô¸úgrepµÄÐС£ .*Ò»ÆðÓôú±íÈÎÒâ×Ö·û¡£
¡¡¡¡[]
¡¡¡¡Æ¥ÅäÒ»¸öÖ¸¶¨·¶Î§ÄÚµÄ×Ö·û£¬Èç'[Gg]rep'Æ¥ÅäGrepºÍgrep¡£
¡¡¡¡[^]
¡¡¡¡Æ¥ÅäÒ»¸ö²»ÔÚÖ¸¶¨·¶Î§ÄÚµÄ×Ö·û£¬È磺'[^A-FH-Z]rep'Æ¥Åä²»°üº¬A-RºÍT-ZµÄÒ»¸ö×Öĸ¿ªÍ·£¬½ô¸úrepµÄÐС£
¡¡¡¡\(..\)
¡¡¡¡±ê¼ÇÆ¥Åä×Ö·û£¬Èç'\(love\)'£¬love±»±ê¼ÇΪ1¡£
¡¡¡¡\<
¡¡¡¡Ãª¶¨µ¥´ÊµÄ¿ªÊ¼£¬Èç:'\\>
¡¡¡¡Ãª¶¨µ¥´ÊµÄ½áÊø£¬Èç'grep\>'Æ¥Åä°üº¬ÒÔgrep½áβµÄµ¥´ÊµÄÐС£
¡¡¡¡x\{m\}
¡¡¡¡Öظ´×Ö·ûx£¬m´Î£¬È磺'0\{5\}'Æ¥Åä°üº¬5¸öoµÄÐС£
¡¡¡¡x\{m,\}
¡¡¡¡Öظ´×Ö·ûx,ÖÁÉÙm´Î£¬È磺'o\{5,\}'Æ¥ÅäÖÁÉÙÓÐ5¸öoµÄÐС£
¡¡¡¡x\{m,n\}
¡¡¡¡Öظ´×Ö·ûx£¬ÖÁÉÙm´Î£¬²»¶àÓÚn´Î£¬È磺'o\{5,10\}'Æ¥Åä5--10¸öoµÄÐС£
¡¡¡¡\w
¡¡¡¡Æ¥ÅäÎÄ×ÖºÍÊý×Ö×Ö·û£¬Ò²¾ÍÊÇ[A-Za-z0-9]£¬È磺'G\w*p'Æ¥ÅäÒÔGºó¸úÁã¸ö»ò¶à¸öÎÄ×Ö»òÊý×Ö×Ö·û£¬È»ºóÊÇp¡£
¡¡¡¡\W
¡¡¡¡\wµÄ·´ÖÃÐÎʽ£¬Æ¥ÅäÒ»¸ö»ò¶à¸ö·Çµ¥´Ê×Ö·û£¬ÈçµãºÅ¾äºÅµÈ¡£
¡¡¡¡\b
¡¡¡¡µ¥´ÊËø¶¨·û£¬Èç: '\bgrepb\'ֻƥÅägrep¡£
¡¡¡¡3. ÓÃÓÚegrepºÍ grep -EµÄÔª×Ö·ûÀ©Õ¹¼¯
¡¡¡¡+
¡¡¡¡Æ¥ÅäÒ»¸ö»ò¶à¸öÏÈǰµÄ×Ö·û¡£È磺'[a-z]+able'£¬Æ¥ÅäÒ»¸ö»ò¶à¸öСд×Öĸºó¸úableµÄ´®£¬Èçloveable,enable,disableµÈ¡£
¡¡¡¡?
¡¡¡¡Æ¥ÅäÁã¸ö»ò¶à¸öÏÈǰµÄ×Ö·û¡£È磺'gr?p'Æ¥Åägrºó¸úÒ»¸ö»òûÓÐ×Ö·û£¬È»ºóÊÇpµÄÐС£
¡¡¡¡a|b|c
¡¡¡¡Æ¥Åäa»òb»òc¡£È磺grep|sedÆ¥Åägrep»òsed
¡¡¡¡()
¡¡¡¡·Ö×é·ûºÅ£¬È磺love(able|rs)ov+Æ¥Åäloveable»òlovers£¬Æ¥ÅäÒ»¸ö»ò¶à¸öov¡£
¡¡¡¡x{m},x{m,},x{m,n}
¡¡¡¡×÷ÓÃͬx\{m\},x\{m,\},x\{m,n\}
¡¡¡¡4. POSIX×Ö·ûÀà
¡¡¡¡ÎªÁËÔÚ²»Í¬¹ú¼ÒµÄ×Ö·û±àÂëÖб£³ÖÒ»ÖÁ£¬POSIX(The Portable Operating System Interface)Ôö¼ÓÁËÌØÊâµÄ×Ö·ûÀ࣬Èç[:alnum:]ÊÇA-Za-z0-9µÄÁíÒ»¸öд·¨¡£Òª°ÑËüÃǷŵ½[]ºÅÄÚ²ÅÄܳÉΪÕýÔò±í´ïʽ£¬Èç[A- Za-z0-9]»ò[[:alnum:]]¡£ÔÚlinuxϵÄgrep³ýfgrepÍ⣬¶¼Ö§³ÖPOSIXµÄ×Ö·ûÀà¡£
¡¡¡¡[:alnum:]
¡¡¡¡ÎÄ×ÖÊý×Ö×Ö·û
¡¡¡¡[:alpha:]
¡¡¡¡ÎÄ×Ö×Ö·û
¡¡¡¡[:digit:]
¡¡¡¡Êý×Ö×Ö·û
¡¡¡¡[:graph:]
¡¡¡¡·Ç¿Õ×Ö·û£¨·Ç¿Õ¸ñ¡¢¿ØÖÆ×Ö·û£©
¡¡¡¡[:lower:]
¡¡¡¡Ð¡Ð´×Ö·û
¡¡¡¡[:cntrl:]
¡¡¡¡¿ØÖÆ×Ö·û
¡¡¡¡[:print:]
¡¡¡¡·Ç¿Õ×Ö·û£¨°üÀ¨¿Õ¸ñ£©
¡¡¡¡[:punct:]
¡¡¡¡±êµã·ûºÅ
¡¡¡¡[:space:]
¡¡¡¡ËùÓпհ××Ö·û£¨ÐÂÐУ¬¿Õ¸ñ£¬ÖƱí·û£©
¡¡¡¡[:upper:]
¡¡¡¡´óд×Ö·û
¡¡¡¡[:xdigit:]
¡¡¡¡Ê®Áù½øÖÆÊý×Ö£¨0-9£¬a-f£¬A-F£©
¡¡¡¡5. GrepÃüÁîÑ¡Ïî
¡¡¡¡-?
¡¡¡¡Í¬Ê±ÏÔʾƥÅäÐÐÉÏϵģ¿ÐУ¬È磺grep -2 pattern filenameͬʱÏÔʾƥÅäÐеÄÉÏÏÂ2ÐС£
¡¡¡¡-b£¬--byte-offset
¡¡¡¡´òÓ¡Æ¥ÅäÐÐÇ°Ãæ´òÓ¡¸ÃÐÐËùÔڵĿéºÅÂë¡£
¡¡¡¡-c,--count
¡¡¡¡Ö»´òÓ¡Æ¥ÅäµÄÐÐÊý£¬²»ÏÔʾƥÅäµÄÄÚÈÝ¡£
¡¡¡¡-f File£¬--file=File
¡¡¡¡´ÓÎļþÖÐÌáȡģ°å¡£¿ÕÎļþÖаüº¬0¸öÄ£°å£¬ËùÒÔʲô¶¼²»Æ¥Åä¡£
¡¡¡¡-h£¬--no-filename
¡¡¡¡µ±ËÑË÷¶à¸öÎļþʱ£¬²»ÏÔʾƥÅäÎļþÃûǰ׺¡£
¡¡¡¡-i£¬--ignore-case
¡¡¡¡ºöÂÔ´óСд²î±ð¡£
¡¡¡¡-q£¬--quiet
¡¡¡¡È¡ÏûÏÔʾ£¬Ö»·µ»ØÍ˳ö״̬¡£0Ôò±íʾÕÒµ½ÁËÆ¥ÅäµÄÐС£
¡¡¡¡-l£¬--files-with-matches
¡¡¡¡´òÓ¡Æ¥ÅäÄ£°åµÄÎļþÇåµ¥¡£
¡¡¡¡-L£¬--files-without-match
¡¡¡¡´òÓ¡²»Æ¥ÅäÄ£°åµÄÎļþÇåµ¥¡£
¡¡¡¡-n£¬--line-number
¡¡¡¡ÔÚÆ¥ÅäµÄÐÐÇ°Ãæ´òÓ¡Ðкš£
¡¡¡¡-s£¬--silent
¡¡¡¡²»ÏÔʾ¹ØÓÚ²»´æÔÚ»òÕßÎÞ·¨¶ÁÈ¡ÎļþµÄ´íÎóÐÅÏ¢¡£
¡¡¡¡-v£¬--revert-match
¡¡¡¡·´¼ìË÷£¬Ö»ÏÔʾ²»Æ¥ÅäµÄÐС£
¡¡¡¡-w£¬--word-regexp
¡¡¡¡Èç¹û±»\<ºÍ\>ÒýÓ㬾Ͱѱí´ïʽ×öΪһ¸öµ¥´ÊËÑË÷¡£
¡¡¡¡-V£¬--version
¡¡¡¡ÏÔʾÈí¼þ°æ±¾ÐÅÏ¢¡£
¡¡¡¡6. ʵÀý
¡¡¡¡ÒªÓúÃgrepÕâ¸ö¹¤¾ß£¬Æäʵ¾ÍÊÇҪдºÃÕýÔò±í´ïʽ£¬ËùÒÔÕâÀï²»¶ÔgrepµÄËùÓй¦ÄܽøÐÐʵÀý½²½â£¬Ö»Áм¸¸öÀý×Ó£¬½²½âÒ»¸öÕýÔò±í´ïʽµÄд·¨¡£
¡¡¡¡$ ls -l | grep '^a'
¡¡¡¡Í¨¹ý¹ÜµÀ¹ýÂËls -lÊä³öµÄÄÚÈÝ£¬Ö»ÏÔʾÒÔa¿ªÍ·µÄÐС£
¡¡¡¡$ grep 'test' d*
¡¡¡¡ÏÔʾËùÓÐÒÔd¿ªÍ·µÄÎļþÖаüº¬testµÄÐС£
¡¡¡¡$ grep 'test' aa bb cc
¡¡¡¡ÏÔʾÔÚaa£¬bb£¬ccÎļþÖÐÆ¥ÅätestµÄÐС£
¡¡¡¡$ grep '[a-z]\{5\}' aa
¡¡¡¡ÏÔʾËùÓаüº¬Ã¿¸ö×Ö·û´®ÖÁÉÙÓÐ5¸öÁ¬ÐøÐ¡Ð´×Ö·ûµÄ×Ö·û´®µÄÐС£
¡¡¡¡$ grep 'w\(es\)t.*\1' aa
¡¡¡¡Èç¹ûwest±»Æ¥Å䣬Ôòes¾Í±»´æ´¢µ½ÄÚ´æÖУ¬²¢±ê¼ÇΪ1£¬È»ºóËÑË÷ÈÎÒâ¸ö×Ö·û£¨.*£©£¬ÕâЩ×Ö·ûºóÃæ½ô¸ú×ÅÁíÍâÒ»¸öes£¨\1£©£¬ÕÒµ½¾ÍÏÔʾ¸ÃÐС£Èç¹ûÓÃegrep»ògrep -E£¬¾Í²»ÓÃ"\"ºÅ½øÐÐתÒ壬ֱ½Óд³É'w(es)t.*\1'¾Í¿ÉÒÔÁË¡£

