Ëæ×ÅÊý¾ÝÁ¿µÄ±¬Õ¨ÐÔÔö³¤£¬ÈçºÎÔÚº£Á¿Êý¾ÝÖпìËÙ׼ȷµØ²éÕÒµ½·ûºÏÌõ¼þµÄ×Ö·û»ò×Ö·û´®£¬³ÉΪÁ˺âÁ¿ÏµÍ³²Ù×÷ЧÂÊÓëÓû§¼¼ÄÜˮƽµÄÖØÒªÖ¸±ê
±¾ÎĽ«ÉîÈë̽ÌÖLinux»·¾³Ï²éÕÒÏà·û×Ö·ûµÄ¸ßЧ·½·¨£¬´Ó»ù´¡ÃüÁîµ½¸ß¼¶¼¼ÇÉ£¬½âËøÄãµÄϵͳDZÄÜ£¬ÈÃÊý¾Ý´¦Àí±äµÃµÃÐÄÓ¦ÊÖ
Ò»¡¢»ù´¡Æª£ºgrepÃüÁîµÄÎÞÏÞ¿ÉÄÜ Ìá¼°LinuxϵÄ×Ö·û²éÕÒ£¬`grep`£¨Global Regular Expression Print£©ÎÞÒÉÊÇÊ×Ñ¡¹¤¾ß
Ëü²»½ö¹¦ÄÜÇ¿´ó£¬¶øÇÒʹÓüò±ã£¬ÊÇÎı¾ËÑË÷ºÍ·ÖÎöµÄÀûÆ÷
1. »ù±¾Ó÷¨ `grep`×î»ù±¾µÄʹÓÃÐÎʽÊÇËÑË÷ÎļþÖеÄÌØ¶¨×Ö·û´®
ÀýÈ磬ҪÔÚÎļþ`example.txt`ÖвéÕÒ°üº¬¡°hello¡±µÄÐУ¬Ö»ÐèÖ´ÐУº grep hello example.txt `grep`ĬÈÏÇø·Ö´óСд£¬Èç¹ûÐèÒªºöÂÔ´óСд£¬¿ÉÒÔ¼ÓÉÏ`-i`Ñ¡Ï grep -i hello example.txt 2. ÕýÔò±í´ïʽ `grep`µÄÇ¿´óÖ®´¦ÔÚÓÚËüÖ§³ÖÕýÔò±í´ïʽ£¨Regular Expressions, RegEx£©£¬ÕâʹµÃËü¿ÉÒÔÆ¥Å临ÔÓµÄģʽ
ÀýÈ磬²éÕÒËùÓÐÒÔ¡°a¡±¿ªÍ·£¬ºó¸úÈÎÒâ×Ö·û£¬²¢ÒÔ¡°z¡±½áβµÄ×Ö·û´®£º grep ^a.z$ example.txt ÆäÖУ¬`^`±íʾÐеĿªÊ¼£¬`.±íʾÈÎÒâÊýÁ¿µÄÈÎÒâ×Ö·û£¬$`±íʾÐеĽáÊø
3. µÝ¹éËÑË÷ µ±ÐèÒªÔÚ¶à¸öÎļþÖнøÐÐËÑË÷ʱ£¬`grep`µÄ`-r`£¨»ò`--recursive`£©Ñ¡ÏîÔÊÐíµÝ¹éËÑË÷Ö¸¶¨Ä¿Â¼ÖеÄËùÓÐÎļþ
ÀýÈ磬ÔÚĿ¼`docs`ÖвéÕÒ°üº¬¡°error¡±µÄËùÓÐÎļþ£º grep -r error docs/ 4. ÏÔʾÐкŠÓÐʱºò£¬ÖªµÀÆ¥Åä×Ö·û´®ËùÔڵľßÌåÐкŷdz£ÓÐÓÃ
Õâʱ£¬`-n`Ñ¡Ïî¾ÍÅÉÉÏÁËÓ󡣺 grep -n hello example.txt 5. ½öÏÔʾÎļþÃû Èç¹ûÖ»¶ÔÄÄЩÎļþ°üº¬Æ¥ÅäÏî¸ÐÐËȤ£¬¶ø²»¹ØÐľßÌåÄÚÈÝ£¬¿ÉÒÔʹÓÃ`-l`Ñ¡Ï grep -rl error docs/ ¶þ¡¢½ø½×ƪ£ºawkÓësedµÄÁª¶¯Á¦Á¿ ËäÈ»`grep`ÒѾ×㹻ǿ´ó£¬µ«ÔÚijЩ¸´ÔÓ³¡¾°Ï£¬½áºÏʹÓÃ`awk`ºÍ`sed`¿ÉÒÔ½øÒ»²½ÌáÉýÊý¾Ý´¦ÀíÄÜÁ¦
1. awk£ºÎı¾´¦ÀíµÄÈðÊ¿¾üµ¶ `awk`ÊÇÒ»¸öÇ¿´óµÄÎı¾´¦Àí¹¤¾ß£¬Éó¤ÓÚ×ֶβÙ×÷ºÍÌõ¼þÅжÏ
ÀýÈ磬´ÓCSVÎļþÖÐÌáÈ¡µÚ¶þÁУ¬²¢²éÕÒ°üº¬Ìض¨ÖµµÄÐУº awk -F, $2 ~ /search_term/{print $0} data.csv ÕâÀ`-F,`Ö¸¶¨¶ººÅ×÷Ϊ×ֶηָô·û£¬`$2 ~ /search_term/`±íʾµÚ¶þÁÐÆ¥ÅäÕýÔò±í´ïʽ`search_term`£¬`{print $0}`±íʾ´òÓ¡ÕûÐÐ
2. sed£ºÁ÷±à¼Æ÷ `sed`£¨Stream Editor£©ÔòÉó¤ÓÚ¶ÔÎı¾½øÐÐÌæ»»¡¢É¾³ýµÈ²Ù×÷
ËäÈ»Ëü±¾Éí²»Ö±½ÓÓÃÓÚ²éÕÒ£¬µ«½áºÏ²éÕÒ¹¦ÄÜ¿ÉÒÔʵÏÖ¸ü¸´ÔÓµÄÎı¾´¦ÀíÈÎÎñ
ÀýÈ磬²éÕÒ²¢Ìæ»»ÎļþÖеÄÌØ¶¨×Ö·û´®£º sed -i s/old_string/new_string/g example.txt ÕâÀ`-i`Ñ¡Ïî±íʾֱ½ÓÐÞ¸ÄÎļþ£¬`s/old_string/new_string/g`ÊÇÌæ»»ÃüÁ`g`±íʾȫ¾ÖÌæ»»
Èý¡¢¸ßЧƪ£º²¢Ðд¦ÀíÓëÐÔÄÜÓÅ»¯ Ãæ¶Ô´ó¹æÄ£Êý¾Ý£¬ÈçºÎÌá¸ß²éÕÒЧÂʳÉΪ¹Ø¼üÎÊÌâ
ÒÔÏÂÊÇһЩʵÓõÄÐÔÄÜÓÅ»¯²ßÂÔ
1. ²¢Ðд¦Àí ÀûÓÃGNU ParallelµÈ¹¤¾ß£¬¿ÉÒÔ²¢ÐÐÖ´Ðжà¸ö`grep`ÈÎÎñ£¬´Ó¶øÏÔÖøÌá¸ß´¦ÀíËÙ¶È
ÀýÈ磬½«Ò»¸ö´óÎļþ·Ö¸î³É¶à¸öС¿é£¬È»ºó²¢ÐÐËÑË÷£º split -l 10000 largefile part_ parallel grep -Hn search_term{} ::: part_ ÕâÀ`split`ÃüÁ`largefile`°´Ã¿10000Ðзָî³É¶à¸öСÎļþ£¬`parallel`ÃüÁî²¢ÐÐÖ´ÐÐ`grep`ËÑË÷
2. ʹÓÃË÷Òý ¶ÔÓÚÆµ·±ËÑË÷µÄ´óÐÍÊý¾Ý¼¯£¬½¨Á¢Ë÷Òý¿ÉÒÔÏÔÖøÌáÉý²éÕÒËÙ¶È
ÀýÈ磬ʹÓÃ`ripgrep`£¨`rg`£©£¬Ò»¸ö»ùÓÚRustµÄ`grep`Ìæ´úÆ·£¬ËüÀûÓÃÁ˶àÏ̺߳ÍÄÚ´æÓ³ÉäÎļþµÈ¼¼Êõ£¬ÊµÏÖÁ˸ü¿ìµÄËÑË÷ËÙ¶È£¬Í¬Ê±Ö§³Ö×Ô¶¯¹¹½¨Ë÷ÒýÒÔ¼ÓËÙºóÐøËÑË÷
rg --build-db rg --db-path rg.db search_term 3. ¹ÜµÀÓëÖØ¶¨Ïò LinuxÖеĹܵÀ£¨|£©ºÍÖØ¶¨Ïò£¨>¡¢``£©»úÖÆ£¬ÔÊÐí½«¶à¸öÃüÁîµÄÊä³ö×÷ΪÊäÈ룬»ò½«Êä³ö±£´æµ½Îļþ£¬´Ó¶ø¹¹½¨¸´ÔӵĴ¦ÀíÁ÷³Ì
ÀýÈ磬½áºÏ`find`ºÍ`grep`À´ËÑË÷ÌØ¶¨ÀàÐÍÎļþÖеÄÄÚÈÝ£º find . -name.log | xargs grep error ÕâÀ`find`ÃüÁî²éÕÒËùÓÐ`.log`Îļþ£¬`xargs`½«ÎļþÃûÁÐ±í´«µÝ¸ø`grep`½øÐÐËÑË÷
ËÄ¡¢ÊµÕ½°¸Àý£ºÈÕÖ¾·ÖÎöÓë¼à¿Ø ÔÚÔËάºÍ¿ª·¢¹¤×÷ÖУ¬ÈÕÖ¾·ÖÎöÊDzéÕÒÏà·û×Ö·ûµÄµäÐÍÓ¦Óó¡¾°
ͨ¹ý¼à¿ØºÍ·ÖÎöÈÕÖ¾Îļþ£¬¿ÉÒÔ¿ìËÙ¶¨Î»ÎÊÌâ¡¢ÓÅ»¯ÏµÍ³ÐÔÄÜ
°¸ÀýÒ»£º²éÕÒÌØ¶¨Ê±¼ä¶ÎÄڵĴíÎóÈÕÖ¾ ¼ÙÉèÓÐÒ»¸ö°üº¬Ê±¼ä´ÁµÄÈÕÖ¾Îļþ`app.log`£¬ÐèÒª²éÕÒÌØ¶¨ÈÕÆÚ£¨Èç2023-10-01£©ÄÚµÄËùÓдíÎóÈÕÖ¾£º grep 2023-10-01 app.log | grep ERROR °¸Àý¶þ£ºÊµÊ±¼à¿ØÈÕÖ¾Îļþ ʹÓÃ`tail -f`ÃüÁî¿ÉÒÔʵʱ¼à¿ØÈÕÖ¾ÎļþµÄÐÂÔöÄÚÈÝ£¬½áºÏ`grep`¿ÉÒÔ¼´Ê±É¸Ñ¡³ö¸ÐÐËȤµÄÈÕÖ¾ÌõÄ¿£º tail -f app.log | grep ERROR ÕâÑù£¬Ã¿µ±ÓÐÐÂÈÕ־дÈë`app.log`£¬°üº¬¡°ERROR¡±µÄÐоͻáÁ¢¼´ÏÔʾÔÚÖÕ¶ËÉÏ
½áÓï ÕÆÎÕLinuxϲéÕÒÏà·û×Ö·ûµÄ¼¼ÇÉ£¬²»½öÄܹ»´ó·ùÌáÉýÊý¾Ý´¦ÀíЧÂÊ£¬»¹ÄÜÔÚ½â¾öʵ¼ÊÎÊÌâʱ¸ü¼ÓÓÎÈÐÓÐÓà
´Ó»ù´¡µÄ`grep`ÃüÁîµ½½ø½×µÄ`awk`¡¢`sed`×éºÏ£¬ÔÙµ½¸ßЧµÄ²¢Ðд¦ÀíºÍË÷Òý¹¹½¨£¬Ã¿Ò»²½¶¼Ô̺¬×ÅLinux²Ù×÷ϵͳµÄÉîºñµ×Ô̺ÍÎÞÏÞ¿ÉÄÜ
Ëæ×ż¼ÊõµÄ²»¶Ï½ø²½£¬ÐµĹ¤¾ßºÍ·½·¨Ò²ÔÚ²»¶ÏÓ¿ÏÖ£¬³ÖÐøÑ§Ï°Óëʵ¼ù£¬½«Ê¹Äã³ÉΪÊý¾Ý´¦ÀíÁìÓòµÄٮٮÕß
ÔÚÕâ¸öÊý¾ÝΪÍõµÄʱ´ú£¬ÕÆÎÕÕâЩ¼¼ÄÜ£¬ÎÞÒÉÊǶԸöÈ˾ºÕùÁ¦µÄ¼«´óÌáÉý