×÷ÕߵĻ°£º
¡¶UNIX AWKʹÓÃÊֲᡷÊÇÎÒ¼¸¸öÔÂÇ°µÄ×÷Æ·ÁË£¬»Ø¹ýÍ·À´¿´£¬ÕâƪÎÄÕÂʵÔÚÊǺܴÖÔÒòµ±Ê±ÎÒд×÷²¢ÉÏ´«Õâ¸ö×÷ƷʱʵÔÚÊÇ̫æÁË£¬Ã»ÓжÔÎÄÕµÄÖÊÁ¿½øÐкܺõļì²é£¬ÐÄÀïÀϾõµÃÓÐÀ¢ÓÚÍøÓѵĺñ°®£¬ÓÚÊdzÃÏиÏæÖØдһ±é£¬ËäÈ»²»Ò»¶¨»áÓкܴóµÄ¸Ä¹Û£¬µ«ÖÊÁ¿Êǿ϶¨ÒªºÃÒ»µãµÄ£¬Î¨Èç´Ë£¬ÎÒµÄÁ¼ÐÄÉϲźÃÊÜÒ»µã£¬ßΣ¬ÏÂÃæ¾ÍÊÇÎÒµÄÐ޸ĸ壬¸÷λÀÏÓÑÇëÓëµÚÒ»°æÏà±Èһϣ¬¿´ÊÇ·ñÓÐËù½ø²½£¡
Õâ´Î¸ÄдÈÔÈ»±£ÁôÁËÔÓеķç¸ñ£ºÕýÎÄÓÉdzÈëÉÎĺó¸½ÉÏÁË´óÁ¿µÄÏà¹Ø×ÊÁÏ£¬ÕâÑù×öµÄÔÒòÊÇΪÁËÂú×ã¸÷ÖÖÓû§µÄÐèÇó£¬ÕâÔÚµÚÒ»°æÖÐÒѾ˵¹ýÁË¡£Õâ´ÎÖ÷ÒªµÄ¸Ä±äÊÇÔÚÄÚÈÝÉÏ£¬¼ÓÈëÁ˺ܶàÐÂÄÚÈÝ£¬²¢Ôö¼ÓÁËʾÀý£¬ÒÔ°ïÖú¶ÁÕßÀí½âÆäÖеÄÄÚÈÝ£¬¸½Â¼Ò²²¹³äÁËÐí¶àеÄ×ÊÁÏ¡£µ±È»¶ÁÕßÒªÕæÕýµØÕÆÎÕawk£¬½ö½ö¶ÁÁ˱¾ÎÄÊDz»¹»µÄ£¬»¹±ØÐëÓÐÉÏ»úʵϰÕâÒ»²½¡£ÖµµÃÌáÐÑ´ó¼ÒµÄÊÇ£¬awkÓкܶà°æ±¾£¬²¢ÇÒ¸÷¸ö°æ±¾Ö®¼ä´æÔÚ×ÅһЩ²î±ð£¬Òò´Ë£¬ÔÚʹÓÃawkÒÔÇ°×îºÃ²Î¿¼Ò»ÏÂÄãʹÓõÄϵͳµÄÁª»ú°ïÖú¡£
ʲôÊÇawk£¿
Äã¿ÉÄܶÔUNIX±È½ÏÊìϤ£¬µ«Äã¿ÉÄܶÔawkºÜÄ°Éú£¬ÕâÒ»µãÒ²²»Ææ¹Ö£¬µÄÈ·£¬ÓëÆäÓÅÐãµÄ¹¦ÄÜÏà±È£¬awk»¹Ô¶Ã»´ïµ½ËüÓ¦ÓеÄÖªÃû¶È¡£awkÊÇʲô£¿ÓëÆäËü´ó¶àÊýUNIXÃüÁͬµÄÊÇ£¬´ÓÃû×ÖÉÏ¿´£¬ÎÒÃDz»¿ÉÄÜÖªµÀawkµÄ¹¦ÄÜ£ºËü¼È²»ÊǾßÓжÀÁ¢ÒâÒåµÄÓ¢Îĵ¥´Ê£¬Ò²²»ÊǼ¸¸öÏà¹Øµ¥´ÊµÄËõд¡£ÊÂʵÉÏ£¬awkÊÇÈý¸öÈËÃûµÄËõд£¬ËûÃÇÊÇ£ºAho¡¢(Peter)WeinbergºÍ(Brain)Kernighan¡£ÕýÊÇÕâÈý¸öÈË´´ÔìÁËawk---Ò»¸öÓÅÐãµÄÑùʽɨÃèÓë´¦Àí¹¤¾ß¡£
AWKµÄ¹¦ÄÜÊÇʲô£¿ÓësedºÍgrepºÜÏàËÆ£¬awkÊÇÒ»ÖÖÑùʽɨÃèÓë´¦Àí¹¤¾ß¡£µ«Æ书ÄÜÈ´´ó´óÇ¿ÓÚsedºÍgrep¡£awkÌṩÁ˼«ÆäÇ¿´óµÄ¹¦ÄÜ£ºËü¼¸ºõ¿ÉÒÔÍê³ÉgrepºÍsedËùÄÜÍê³ÉµÄÈ«²¿¹¤×÷£¬Í¬Ê±£¬Ëü»¹¿ÉÒÔ¿ÉÒÔ½øÐÐÑùʽװÈë¡¢Á÷¿ØÖÆ¡¢ÊýѧÔËËã·û¡¢½ø³Ì¿ØÖÆÓï¾äÉõÖÁÓÚÄÚÖõıäÁ¿ºÍº¯Êý¡£Ëü¾ß±¸ÁËÒ»¸öÍêÕûµÄÓïÑÔËùÓ¦¾ßÓеļ¸ºõËùÓо«ÃÀÌØÐÔ¡£Êµ¼ÊÉÏ£¬awkµÄÈ·ÓµÓÐ×Ô¼ºµÄÓïÑÔ£ºawk³ÌÐòÉè¼ÆÓïÑÔ£¬awkµÄÈýλ´´½¨ÕßÒѽ«ËüÕýʽ¶¨ÒåΪ£ºÑùʽɨÃèºÍ´¦ÀíÓïÑÔ¡£
ΪʲôʹÓÃawk£¿
¼´Ê¹Èç´Ë£¬ÄãÒ²ÐíÈÔÈ»»áÎÊ£¬ÎÒΪʲôҪʹÓÃawk£¿
ʹÓÃawkµÄµÚÒ»¸öÀíÓÉÊÇ»ùÓÚÎı¾µÄÑùʽɨÃèºÍ´¦ÀíÊÇÎÒÃǾ³£×öµÄ¹¤×÷£¬awkËù×öµÄ¹¤×÷ÓÐЩÏóÊý¾Ý¿â£¬µ«ÓëÊý¾Ý¿â²»Í¬µÄÊÇ£¬Ëü´¦ÀíµÄÊÇÎı¾Îļþ£¬ÕâЩÎļþûÓÐרÃŵĴ洢¸ñʽ£¬ÆÕͨµÄÈËÃǾÍÄܱ༡¢ÔĶÁ¡¢Àí½âºÍ´¦ÀíËüÃÇ¡£¶øÊý¾Ý¿âÎļþÍùÍù¾ßÓÐÌØÊâµÄ´æ´¢¸ñʽ£¬ÕâʹµÃËüÃDZØÐëÓÃÊý¾Ý¿â´¦Àí³ÌÐòÀ´´¦ÀíËüÃÇ¡£¼ÈÈ»ÕâÖÖÀàËÆÓÚÊý¾Ý¿âµÄ´¦Àí¹¤×÷ÎÒÃǾ³£»áÓöµ½£¬ÎÒÃǾÍÓ¦µ±ÕÒµ½´¦ÀíËüÃǵļò±ãÒ×Ðеķ½·¨£¬UNIXÓкܶàÕâ·½ÃæµÄ¹¤¾ß£¬ÀýÈçsed ¡¢grep¡¢sortÒÔ¼°findµÈµÈ£¬awkÊÇÆäÖÐÊ®·ÖÓÅÐãµÄÒ»ÖÖ¡£
ʹÓÃawkµÄµÚ¶þ¸öÀíÓÉÊÇawkÊÇÒ»¸ö¼òµ¥µÄ¹¤¾ß£¬µ±È»ÕâÊÇÏà¶ÔÓÚÆäÇ¿´óµÄ¹¦ÄÜÀ´ËµµÄ¡£µÄÈ·£¬UNIXÓÐÐí¶àÓÅÐãµÄ¹¤¾ß£¬ÀýÈçUNIXÌìÈ»µÄ¿ª·¢¹¤¾ßCÓïÑÔ¼°ÆäÑÓÐøC++¾Í·Ç³£µÄÓÅÐã¡£µ«Ïà¶ÔÓÚËüÃÇÀ´Ëµ£¬awkÍê³ÉͬÑùµÄ¹¦ÄÜÒª·½±ãºÍ¼ò½ÝµÃ¶à¡£ÕâÊ×ÏÈÊÇÒòΪawkÌṩÁËÊÊÓ¦¶àÖÖÐèÒªµÄ½â¾ö·½°¸£º´Ó½â¾ö¼òµ¥ÎÊÌâµÄawkÃüÁîÐе½¸´ÔÓ¶ø¾«ÇɵÄawk³ÌÐòÉè¼ÆÓïÑÔ£¬ÕâÑù×öµÄºÃ´¦ÊÇ£¬Äã¿ÉÒÔ²»±ØÓø´Ôӵķ½·¨È¥½â¾ö±¾À´ºÜ¼òµ¥µÄÎÊÌâ¡£ÀýÈ磬Äã¿ÉÒÔÓÃÒ»¸öÃüÁîÐнâ¾ö¼òµ¥µÄÎÊÌ⣬¶øC²»ÐУ¬¼´Ê¹Ò»¸öÔÙ¼òµ¥µÄ³ÌÐò£¬CÓïÑÔÒ²±ØÐë¾¹ý±àд¡¢±àÒëµÄÈ«¹ý³Ì¡£Æä´Î£¬awk±¾ÉíÊǽâÊÍÖ´Ðеģ¬Õâ¾ÍʹµÃawk³ÌÐò²»±Ø¾¹ý±àÒëµÄ¹ý³Ì£¬Í¬Ê±£¬ÕâҲʹµÃËüÓëshell script³ÌÐòÄܹ»ºÜºÃµÄÆõºÏ¡£×îºó£¬awk±¾Éí½ÏCÓïÑÔ¼òµ¥£¬ËäÈ»awkÎüÊÕÁËCÓïÑԺܶàÓÅÐãµÄ³É·Ö£¬ÊìϤCÓïÑÔ»á¶ÔѧϰawkÓкܴóµÄ°ïÖú£¬µ«awk±¾Éí²»ÐëÒª»áʹÓÃCÓïÑÔ¡ª¡ªÒ»ÖÖ¹¦ÄÜÇ¿´óµ«ÐèÒª´óÁ¿Ê±¼äѧϰ²ÅÄÜÕÆÎÕÆä¼¼ÇɵĿª·¢¹¤¾ß¡£
ʹÓÃawkµÄµÚÈý¸öÀíÓÉÊÇawkÊÇÒ»¸öÈÝÒ×»ñµÃµÄ¹¤¾ß¡£ÓëCºÍC++ÓïÑÔ²»Í¬£¬awkÖ»ÓÐÒ»¸öÎļþ(/bin/awk)£¬¶øÇÒ¼¸ºõÿ¸ö°æ±¾µÄUNIX¶¼Ìṩ¸÷×Ô°æ±¾µÄawk£¬ÄãÍêÈ«²»±Ø·ÑÐÄÈ¥ÏëÈçºÎ»ñµÃawk¡£µ«CÓïÑÔÈ´²»ÊÇÕâÑù£¬ËäÈ»CÓïÑÔÊÇUNIXÌìÈ»µÄ¿ª·¢¹¤¾ß£¬µ«Õâ¸ö¿ª·¢¹¤¾ßÈ´Êǵ¥¶À·¢Ðеģ¬»»ÑÔÖ®£¬Äã±ØÐëΪÄãµÄUNIX°æ±¾µÄCÓïÑÔ¿ª·¢¹¤¾ßµ¥¶À¸¶·Ñ£¨µ±È»Ê¹ÓÃD°æÕß³ýÍ⣩£¬»ñµÃ²¢°²×°Ëü£¬È»ºóÄã²Å¿ÉÒÔʹÓÃËü¡£
»ùÓÚÒÔÉÏÀíÓÉ£¬ÔÙ¼ÓÉÏawkÇ¿´óµÄ¹¦ÄÜ£¬ÎÒÃÇÓÐÀíÓÉ˵£¬Èç¹ûÄãÒª´¦ÀíÓëÎı¾ÑùʽɨÃèÏà¹ØµÄ¹¤×÷£¬awkÓ¦¸ÃÊÇÄãµÄµÚһѡÔñ¡£ÔÚÕâÀïÓÐÒ»¸ö¿É×ñѵÄÒ»°ãÔÔò£ºÈç¹ûÄãÓÃÆÕͨµÄshell¹¤¾ß»òshell scriptÓÐÀ§ÄѵĻ°£¬ÊÔÊÔawk,Èç¹ûawkÈÔ²»Äܽâ¾öÎÊÌ⣬Ôò±ãÓÃCÓïÑÔ£¬Èç¹ûCÓïÑÔÈÔȻʧ°Ü£¬ÔòÒÆÖÁC++¡£
awkµÄµ÷Ó÷½Ê½
Ç°ÃæÔø¾Ëµ¹ý£¬awkÌṩÁËÊÊÓ¦¶àÖÖÐèÒªµÄ²»Í¬½â¾ö·½°¸£¬ËüÃÇÊÇ£º
Ò»¡¢awkÃüÁîÐУ¬Äã¿ÉÒÔÏóʹÓÃÆÕͨUNIXÃüÁîÒ»ÑùʹÓÃawk£¬ÔÚÃüÁîÐÐÖÐÄãÒ²¿ÉÒÔʹÓÃawk³ÌÐòÉè¼ÆÓïÑÔ£¬ËäÈ»awkÖ§³Ö¶àÐеļÈ룬µ«ÊǼÈ볤³¤µÄÃüÁîÐв¢±£Ö¤ÆäÕýÈ·ÎÞÎóÈ´ÊÇÒ»¼þÁîÈËÍ·ÌÛµÄÊ£¬Òò´Ë£¬ÕâÖÖ·½·¨Ò»°ãÖ»ÓÃÓÚ½â¾ö¼òµ¥µÄÎÊÌâ¡£µ±È»£¬ÄãÒ²¿ÉÒÔÔÚshell script³ÌÐòÖÐÒýÓÃawkÃüÁîÐÐÉõÖÁawk³ÌÐò½Å±¾¡£
¶þ¡¢Ê¹ÓÃ-fÑ¡Ïîµ÷ÓÃawk³ÌÐò¡£awkÔÊÐí½«Ò»¶Îawk³ÌÐòдÈëÒ»¸öÎı¾Îļþ£¬È»ºóÔÚawkÃüÁîÐÐÖÐÓÃ-fÑ¡Ïîµ÷Óò¢Ö´ÐÐÕâ¶Î³ÌÐò¡£¾ßÌåµÄ·½·¨ÎÒÃǽ«ÔÚºóÃæµÄawkÓï·¨Öн²µ½¡£
Èý¡¢ÀûÓÃÃüÁî½âÊÍÆ÷µ÷ÓÃawk³ÌÐò£ºÀûÓÃUNIXÖ§³ÖµÄÃüÁî½âÊÍÆ÷¹¦ÄÜ£¬ÎÒÃÇ¿ÉÒÔ½«Ò»¶Îawk³ÌÐòдÈëÎı¾Îļþ£¬È»ºóÔÚËüµÄµÚÒ»ÐмÓÉÏ:
#!/bin/awk -f
²¢¸³ÓèÕâ¸öÎı¾ÎļþÒÔÖ´ÐеÄȨÏÞ¡£ÕâÑù×öÖ®ºó£¬Äã¾Í¿ÉÒÔÔÚÃüÁîÐÐÖÐÓÃÀàËÆÓÚÏÂÃæÕâÑùµÄ·½Ê½µ÷Óò¢Ö´ÐÐÕâ¶Îawk³ÌÐòÁË¡£
$awk½Å±¾Îı¾Ãû ´ý´¦ÀíÎļþ
awkµÄÓï·¨£º
ÓëÆäËüUNIXÃüÁîÒ»Ñù£¬awkÓµÓÐ×Ô¼ºµÄÓï·¨£º
awk [ -F re] [parameter...] ['prog'] [-f progfile][in_file...]
²ÎÊý˵Ã÷£º
-F re:ÔÊÐíawk¸ü¸ÄÆä×ֶηָô·û¡£
parameter: ¸Ã²ÎÊý°ïÖúΪ²»Í¬µÄ±äÁ¿¸³Öµ¡£
'prog': awkµÄ³ÌÐòÓï¾ä¶Î¡£Õâ¸öÓï¾ä¶Î±ØÐëÓõ¥Íغţº'ºÍ'À¨Æð£¬ÒÔ·À±»shell½âÊÍ¡£Õâ¸ö³ÌÐòÓï¾ä¶ÎµÄ±ê×¼ÐÎʽΪ£º
'pattern {action}'
ÆäÖÐpattern²ÎÊý¿ÉÒÔÊÇegrepÕýÔò±í´ïʽÖеÄÈκÎÒ»¸ö£¬Ëü¿ÉÒÔʹÓÃÓï·¨/re/ÔÙ¼ÓÉÏһЩÑùʽƥÅä¼¼Çɹ¹³É¡£ÓësedÀàËÆ£¬ÄãÒ²¿ÉÒÔʹÓÃ","·Ö¿ªÁ½ÑùʽÒÔÑ¡Ôñij¸ö·¶Î§¡£¹ØÓÚÆ¥ÅäµÄϸ½Ú£¬Äã¿ÉÒԲο¼¸½Â¼£¬Èç¹ûÈÔ²»¶®µÄ»°£¬ÕÒ±¾UNIXÊéѧѧgrepºÍsed£¨±¾ÈËÊÇÔÚѧϰedʱÕÆÎÕÆ¥Åä¼¼ÊõµÄ£©¡£action²ÎÊý×ÜÊDZ»´óÀ¨ºÅ°üΧ£¬ËüÓÉһϵͳawkÓï¾ä×é³É£¬¸÷Óï¾äÖ®¼äÓÃ";"·Ö¸ô¡£awk½âÊÍËüÃÇ£¬²¢ÔÚpattern¸ø¶¨µÄÑùʽƥÅäµÄ¼Ç¼ÉÏÖ´ÐÐÆä²Ù×÷¡£ÓëshellÀàËÆ£¬ÄãÒ²¿ÉÒÔʹÓá°#¡±×÷ΪעÊÍ·û£¬Ëüʹ¡°#¡±µ½ÐÐβµÄÄÚÈݳÉΪעÊÍ£¬ÔÚ½âÊÍÖ´ÐÐʱ£¬ËüÃǽ«±»ºöÂÔ¡£Äã¿ÉÒÔÊ¡ÂÔpatternºÍactionÖ®Ò»£¬µ«²»ÄÜÁ½ÕßͬʱʡÂÔ£¬µ±Ê¡ÂÔpatternʱûÓÐÑùʽƥÅ䣬±íʾ¶ÔËùÓÐÐУ¨¼Ç¼£©¾ùÖ´ÐвÙ×÷£¬Ê¡ÂÔactionʱִÐÐȱʡµÄ²Ù×÷¡ª¡ªÔÚ±ê×¼Êä³öÉÏÏÔʾ¡£
-f progfile:ÔÊÐíawkµ÷Óò¢Ö´ÐÐprogfileÖ¸¶¨ÓгÌÐòÎļþ¡£progfileÊÇÒ»¸öÎı¾Îļþ£¬Ëû±ØÐë·ûºÏawkµÄÓï·¨¡£
in_file:awkµÄÊäÈëÎļþ£¬awkÔÊÐí¶Ô¶à¸öÊäÈëÎļþ½øÐд¦Àí¡£ÖµµÃ×¢ÒâµÄÊÇawk²»ÐÞ¸ÄÊäÈëÎļþ¡£Èç¹ûδָ¶¨ÊäÈëÎļþ£¬awk½«½ÓÊܱê×¼ÊäÈ룬²¢½«½á¹ûÏÔʾÔÚ±ê×¼Êä³öÉÏ¡£awkÖ§³ÖÊäÈëÊä³öÖض¨Ïò¡£
awkµÄ¼Ç¼¡¢×Ö¶ÎÓëÄÚÖñäÁ¿£º
Ç°Ãæ˵¹ý£¬awk´¦ÀíµÄ¹¤×÷ÓëÊý¾Ý¿âµÄ´¦Àí·½Ê½ÓÐÏà֮ͬ´¦£¬ÆäÏàͬ´¦Ö®Ò»¾ÍÊÇawkÖ§³Ö¶Ô¼Ç¼ºÍ×ֶεĴ¦Àí£¬ÆäÖжÔ×ֶεĴ¦ÀíÊÇgrepºÍsed²»ÄÜʵÏֵģ¬ÕâÒ²ÊÇawkÓÅÓÚ¶þÕßµÄÔÒòÖ®Ò»¡£ÔÚawkÖУ¬È±Ê¡µÄÇé¿öÏÂ×ÜÊǽ«Îı¾ÎļþÖеÄÒ»ÐÐÊÓΪһ¸ö¼Ç¼£¬¶ø½«Ò»ÐÐÖеÄijһ²¿·Ö×÷Ϊ¼Ç¼ÖеÄÒ»¸ö×ֶΡ£ÎªÁ˲Ù×÷ÕâЩ²»Í¬µÄ×ֶΣ¬awk½èÓÃshellµÄ·½·¨£¬ÓÃ$1,$2,$3...ÕâÑùµÄ·½Ê½À´Ë³ÐòµØ±íʾÐУ¨¼Ç¼£©ÖеIJ»Í¬×ֶΡ£ÌØÊâµØ£¬awkÓÃ$0±íʾÕû¸öÐУ¨¼Ç¼£©¡£²»Í¬µÄ×Ö¶ÎÖ®¼äÊÇÓóÆ×÷·Ö¸ô·ûµÄ×Ö·û·Ö¸ô¿ªµÄ¡£ÏµÍ³Ä¬Èϵķָô·ûÊÇ¿Õ¸ñ¡£awkÔÊÐíÔÚÃüÁîÐÐÖÐÓÃ-F reµÄÐÎʽÀ´¸Ä±äÕâ¸ö·Ö¸ô·û¡£ÊÂʵÉÏ£¬awkÓÃÒ»¸öÄÚÖõıäÁ¿FSÀ´¼ÇÒäÕâ¸ö·Ö¸ô·û¡£awkÖÐÓкü¸¸öÕâÑùµÄÄÚÖñäÁ¿£¬ÀýÈ磬¼Ç¼·Ö¸ô·û±äÁ¿RS¡¢µ±Ç°¹¤×÷µÄ¼Ç¼ÊýNRµÈµÈ£¬±¾ÎĺóÃæµÄ¸½±íÁгöÁËÈ«²¿µÄÄÚÖñäÁ¿¡£ÕâЩÄÚÖõıäÁ¿¿ÉÒÔÔÚawk³ÌÐòÖÐÒýÓûòÐ޸ģ¬ÀýÈ磬Äã¿ÉÒÔÀûÓÃNR±äÁ¿ÔÚģʽƥÅäÖÐÖ¸¶¨¹¤×÷·¶Î§£¬Ò²¿ÉÒÔͨ¹ýÐ޸ļǼ·Ö¸ô·ûRSÈÃÒ»¸öÌØÊâ×Ö·û¶ø²»ÊÇ»»Ðзû×÷Ϊ¼Ç¼µÄ·Ö¸ô·û¡£
Àý:ÏÔʾÎı¾ÎļþmyfileÖеÚÆßÐе½µÚÊ®ÎåÐÐÖÐÒÔ×Ö·û%·Ö¸ôµÄµÚÒ»×ֶΣ¬µÚÈý×ֶκ͵ÚÆß×ֶΣº
awk -F % 'NR==7,NR==15 {printf $1 $3 $7}'
awkµÄÄÚÖú¯Êý
awkÖ®ËùÒÔ³ÉΪһÖÖÓÅÐãµÄ³ÌÐòÉè¼ÆÓïÑÔµÄÔÒòÖ®Ò»ÊÇËüÎüÊÕÁËijЩÓÅÐãµÄ³ÌÐòÉè¼ÆÓïÑÔ£¨ÀýÈçC£©ÓïÑÔµÄÐí¶àÓŵ㡣ÕâЩÓŵãÖ®Ò»¾ÍÊÇÄÚÖú¯ÊýµÄʹÓã¬awk¶¨Òå²¢Ö§³ÖÁËһϵÁеÄÄÚÖú¯Êý£¬ÓÉÓÚÕâЩº¯ÊýµÄʹÓã¬Ê¹µÃawkÌṩµÄ¹¦ÄܸüΪÍêÉƺÍÇ¿´ó£¬ÀýÈ磬awkʹÓÃÁËһϵÁеÄ×Ö·û´®´¦ÀíÄÚÖú¯Êý(ÕâЩº¯Êý¿´ÆðÀ´ÓëCÓïÑÔµÄ×Ö·û´®´¦Àíº¯ÊýÏàËÆ£¬ÆäʹÓ÷½Ê½ÓëCÓïÑÔÖеĺ¯ÊýÒ²Ïà²îÎÞ¼¸)£¬ÕýÊÇÓÉÓÚÕâЩÄÚÖú¯ÊýµÄʹÓã¬Ê¹awk´¦Àí×Ö·û´®µÄ¹¦Äܸü¼ÓÇ¿´ó¡£±¾ÎĺóÃæµÄ¸½Â¼ÖÐÁÐÓÐÒ»°ãµÄawkËùÌṩµÄÄÚÖú¯Êý£¬ÕâЩÄÚÖú¯ÊýÒ²ÐíÓëÄãµÄawk°æ±¾ÓÐЩ³öÈ룬Òò´Ë£¬ÔÚʹÓÃ֮ǰ£¬×îºÃ²Î¿¼Ò»ÏÂÄãµÄϵͳÖеÄÁª»ú°ïÖú¡£
×÷ΪÄÚÖú¯ÊýµÄÒ»¸öÀý×Ó£¬ÎÒÃǽ«ÔÚÕâÀï½éÉÜawkµÄprintfº¯Êý£¬Õâ¸öº¯ÊýʹµÃawkÓëcÓïÑÔµÄÊä³öÏàÒ»Ö¡£Êµ¼ÊÉÏ£¬awkÖÐÓÐÐí¶àÒýÓÃÐÎʽ¶¼ÊÇ´ÓCÓïÑÔ½èÓùýÀ´µÄ¡£Èç¹ûÄãÊìϤCÓïÑÔ£¬ÄãÒ²Ðí»á¼ÇµÃÆäÖеÄprintfº¯Êý£¬ËüÌṩµÄÇ¿´ó¸ñʽÊä³ö¹¦ÄÜÔø¾´øÎÒÃÇÐí¶àµÄ·½±ã¡£ÐÒÔ˵ÄÊÇ£¬ÎÒÃÇÔÚawkÖÐÓÖºÍËüÖØ·êÁË¡£awkÖÐprintf¼¸ºõÓëCÓïÑÔÖÐһģһÑù£¬Èç¹ûÄãÊìϤCÓïÑԵĻ°£¬ÄãÍêÈ«¿ÉÒÔÕÕCÓïÑÔµÄģʽʹÓÃawkÖеÄprintf¡£Òò´ËÔÚÕâÀÎÒÃÇÖ»¸ø³öÒ»¸öÀý×Ó£¬Èç¹ûÄã²»ÊìϤµÄ»°£¬ÇëËæ±ãÕÒÒ»±¾CÓïÑÔµÄÈëÃÅÊé··¡£
Àý:ÏÔʾÎļþmyfileÖеÄÐкź͵Ú3×ֶΣº
$awk '{printf"%03d%s ",NR,$1}' myfile
ÔÚÃüÁîÐÐʹÓÃawk
°´ÕÕ˳Ðò£¬ÎÒÃÇÓ¦µ±½²½âawk³ÌÐòÉè¼ÆµÄÄÚÈÝÁË£¬µ«ÔÚ½²½â֮ǰ£¬ÎÒÃǽ«ÓÃһЩÀý×ÓÀ´¶ÔÇ°ÃæµÄ֪ʶ½øÐлعˣ¬ÕâЩÀý×Ó¶¼ÊÇÔÚÃüÁîÐÐÖÐʹÓõģ¬ÓÉ´ËÎÒÃÇ¿ÉÒÔÖªµÀÔÚÃüÁîÐÐÖÐʹÓÃawkÊǶàôµÄ·½±ã¡£ÕâÑù×öµÄÔÒòÒ»·½ÃæÊÇΪÏÂÃæµÄÄÚÈÝ×÷Æ̵棬ÁíÒ»·½ÃæÊǽéÉÜһЩ½â¾ö¼òµ¥ÎÊÌâµÄ·½·¨£¬ÎÒÃÇÍêȫûÓбØÒªÓø´Ôӵķ½·¨À´½â¾ö¼òµ¥µÄÎÊÌâ----¼ÈÈ»awkÌṩÁ˽ÏΪ¼òµ¥µÄ·½·¨µÄ»°¡£
Àý£ºÏÔʾÎı¾ÎļþmydocÆ¥Å䣨º¬ÓУ©×Ö·û´®"sun"µÄËùÓÐÐС£
$awk '/sun/{print}' mydoc
ÓÉÓÚÏÔʾÕû¸ö¼Ç¼£¨È«ÐУ©ÊÇawkµÄȱʡ¶¯×÷£¬Òò´Ë¿ÉÒÔÊ¡ÂÔactionÏî¡£
$awk '/sun/' mydoc
Àý£ºÏÂÃæÊÇÒ»¸ö½ÏΪ¸´ÔÓµÄÆ¥ÅäµÄʾÀý£º
$awk '/[Ss]un/,/[Mm]oon/ {print}' myfile
Ëü½«ÏÔʾµÚÒ»¸öÆ¥ÅäSun»òsunµÄÐÐÓëµÚÒ»¸öÆ¥ÅäMoon»òmoonµÄÐÐÖ®¼äµÄÐУ¬²¢ÏÔʾµ½±ê×¼Êä³öÉÏ¡£
Àý£ºÏÂÃæµÄʾÀýÏÔʾÁËÄÚÖñäÁ¿ºÍÄÚÖú¯Êýlength£¨£©µÄʹÓãº
$awk 'length($0)>80 {print NR}' myfile
¸ÃÃüÁîÐн«ÏÔʾÎı¾myfileÖÐËùÓг¬¹ý80¸ö×Ö·ûµÄÐкţ¬ÔÚÕâÀÓÃ$0±íʾÕû¸ö¼Ç¼£¨ÐУ©£¬Í¬Ê±£¬ÄÚÖñäÁ¿NR²»Ê¹ÓñêÖ¾·û'$'¡£
Àý£º×÷Ϊһ¸ö½ÏΪʵ¼ÊµÄÀý×Ó£¬ÎÒÃǼÙÉèÒª¶ÔUNIXÖеÄÓû§½øÐа²È«ÐÔ¼ì²é£¬·½·¨ÊÇ¿¼²ì/etcϵÄpasswdÎļþ£¬¼ì²éÆäÖеÄpasswd×ֶΣ¨µÚ¶þ×ֶΣ©ÊÇ·ñΪ"*"£¬È粻Ϊ"*"£¬Ôò±íʾ¸ÃÓû§Ã»ÓÐÉèÖÃÃÜÂ룬ÏÔʾ³öÕâЩÓû§Ãû£¨µÚÒ»×ֶΣ©¡£ÎÒÃÇ¿ÉÒÔÓÃÈçÏÂÓï¾äʵÏÖ£º
#awk -F: '$2=="" {printf("%s no password! ",$1' /etc/passwd
ÔÚÕâ¸öʾÀýÖУ¬passwdÎļþµÄ×ֶηָô·ûÊÇ¡°£º¡±£¬Òò´Ë£¬±ØÐëÓÃ-F£ºÀ´¸ü¸ÄĬÈϵÄ×ֶηָô·û£¬Õâ¸öʾÀýÖÐÒ²Éæ¼°µ½ÁËÄÚÖú¯ÊýprintfµÄʹÓá£
awkµÄ±äÁ¿
ÈçͬÆäËü³ÌÐòÉè¼ÆÓïÑÔÒ»Ñù£¬awkÔÊÐíÔÚ³ÌÐòÓïÑÔÖÐÉèÖñäÁ¿£¬ÊÂʵÉÏ£¬Ìṩ±äÁ¿µÄ¹¦ÄÜÊdzÌÐòÉè¼ÆÓïÑÔµÄÆä±¾ÒªÇ󣬲»Ìṩ±äÁ¿µÄ³ÌÐòÉè¼ÆÓïÑÔ±¾ÈË»¹´Óδ¼û¹ý¡£
awkÌṩÁ½ÖÖ±äÁ¿£¬Ò»ÖÖÊÇawkÄÚÖõıäÁ¿£¬ÕâÇ°ÃæÎÒÃÇÒѾ½²¹ý£¬ÐèÒª×ÅÖØÖ¸³öµÄÊÇ£¬ÓëºóÃæÌáµ½µÄÆäËü±äÁ¿²»Í¬µÄÊÇ£¬ÔÚawk³ÌÐòÖÐÒýÓÃÄÚÖñäÁ¿²»ÐèҪʹÓñêÖ¾·û"$"£¨»ØÒäÒ»ÏÂÇ°Ãæ½²¹ýµÄNRµÄʹÓã©¡£awkÌṩµÄÁíÒ»ÖÖ±äÁ¿ÊÇ×Ô¶¨Òå±äÁ¿¡£awkÔÊÐíÓû§ÔÚawk³ÌÐòÓï¾äÖж¨Òå²¢µ÷ÓÃ×ÔÒѵıäÁ¿¡£µ±È»ÕâÖÖ±äÁ¿²»ÄÜÓëÄÚÖñäÁ¿¼°ÆäËüawk±£Áô×ÖÏàͬ£¬ÔÚawkÖÐÒýÓÃ×Ô¶¨Òå±äÁ¿±ØÐëÔÚËüÇ°Ãæ¼ÓÉϱêÖ¾·û"$"¡£ÓëCÓïÑÔ²»Í¬µÄÊÇ£¬awkÖв»ÐèÒª¶Ô±äÁ¿½øÐгõʼ»¯£¬awk¸ù¾ÝÆäÔÚawkÖеÚÒ»´Î³öÏÖµÄÐÎʽºÍÉÏÏÂÎÄÈ·¶¨Æä¾ßÌåµÄÊý¾ÝÀàÐÍ¡£µ±±äÁ¿ÀàÐͲ»È·¶¨Ê±£¬awkĬÈÏÆäΪ×Ö·û´®ÀàÐÍ¡£ÕâÀïÓÐÒ»¸ö¼¼ÇÉ£ºÈç¹ûÄãÒªÈÃÄãµÄawk³ÌÐòÖªµÀÄãËùʹÓõıäÁ¿µÄÃ÷È·ÀàÐÍ£¬ÄãÓ¦µ±ÔÚÔÚ³ÌÐòÖиøËü¸³³õÖµ¡£ÔÚºóÃæµÄʵÀýÖУ¬ÎÒÃǽ«Óõ½ÕâÒ»¼¼ÇÉ¡£
ÔËËãÓëÅжϣº
×÷ΪһÖÖ³ÌÐòÉè¼ÆÓïÑÔËùÓ¦¾ßÓеÄÌصãÖ®Ò»£¬awkÖ§³Ö¶àÖÖÔËË㣬ÕâЩÔËËãÓëCÓïÑÔÌṩµÄ¼¸±¾Ïàͬ£ºÈç+¡¢-¡¢*¡¢/¡¢%µÈµÈ£¬Í¬Ê±£¬awkÒ²Ö§³ÖCÓïÑÔÖÐÀàËÆ++¡¢--¡¢+=¡¢-=¡¢=+¡¢=-Ö®ÀàµÄ¹¦ÄÜ£¬Õâ¸øÊìϤCÓïÑÔµÄʹÓÃÕß±àдawk³ÌÐò´øÀ´Á˼«´óµÄ·½±ã¡£×÷Ϊ¶ÔÔËË㹦ÄܵÄÒ»ÖÖÀ©Õ¹£¬awk»¹ÌṩÁËһϵÁÐÄÚÖõÄÔËË㺯Êý£¨Èçlog¡¢sqr¡¢cos¡¢sinµÈµÈ£©ºÍһЩÓÃÓÚ¶Ô×Ö·û´®½øÐвÙ×÷£¨ÔËË㣩µÄº¯Êý£¨Èçlength¡¢substrµÈµÈ£©¡£ÕâЩº¯ÊýµÄÒýÓôó´óµÄÌá¸ßÁËawkµÄÔËË㹦ÄÜ¡£
×÷Ϊ¶ÔÌõ¼þתÒÆÖ¸ÁîµÄÒ»²¿·Ö£¬¹ØϵÅжÏÊÇÿÖÖ³ÌÐòÉè¼ÆÓïÑÔ¶¼¾ß±¸µÄ¹¦ÄÜ£¬awkÒ²²»ÀýÍâ¡£awkÖÐÔÊÐí½øÐжàÖÖ²âÊÔ£¬Èç³£ÓõÄ==£¨µÈÓÚ£©¡¢£¡=£¨²»µÈÓÚ£©¡¢>£¨´óÓÚ£©¡¢<£¨Ð¡ÓÚ£©¡¢>=£¨´óÓÚµÈÓÚ£©¡¢>=£¨Ð¡ÓÚµÈÓÚ£©µÈµÈ£¬Í¬Ê±£¬×÷ΪÑùʽƥÅ䣬»¹ÌṩÁË~£¨Æ¥ÅäÓÚ£©ºÍ£¡~£¨²»Æ¥ÅäÓÚ£©Åжϡ£
×÷Ϊ¶Ô²âÊÔµÄÒ»ÖÖÀ©³ä£¬awkÒ²Ö§³ÖÓÃÂß¼ÔËËã·û:!(·Ç)¡¢&&£¨Ó룩¡¢||£¨»ò£©ºÍÀ¨ºÅ£¨£©½øÐжàÖØÅжϣ¬Õâ´ó´óÔöÇ¿ÁËawkµÄ¹¦ÄÜ¡£±¾Îĵĸ½Â¼ÖÐÁгöÁËawkËùÔÊÐíµÄÔËËã¡¢ÅжÏÒÔ¼°²Ù×÷·ûµÄÓÅÏȼ¶¡£
awkµÄÁ÷³Ì¿ØÖÆ
Á÷³Ì¿ØÖÆÓï¾äÊÇÈκγÌÐòÉè¼ÆÓïÑÔ¶¼²»ÄÜȱÉٵIJ¿·Ö¡£ÈκκõÄÓïÑÔ¶¼ÓÐһЩִÐÐÁ÷³Ì¿ØÖƵÄÓï¾ä¡£awkÌṩµÄÍ걸µÄÁ÷³Ì¿ØÖÆÓï¾äÀàËÆÓÚCÓïÑÔ£¬Õâ¸øÎÒÃDZà³Ì´øÀ´Á˼«´óµÄ·½±ã¡£
1¡¢BEGINºÍEND:
ÔÚawkÖÐÁ½¸öÌرðµÄ±í´ïʽ£¬BEGINºÍEND£¬ÕâÁ½Õ߶¼¿ÉÓÃÓÚpatternÖУ¨²Î¿¼Ç°ÃæµÄawkÓï·¨£©£¬ÌṩBEGINºÍENDµÄ×÷ÓÃÊǸø³ÌÐò¸³Óè³õʼ״̬ºÍÔÚ³ÌÐò½áÊøÖ®ºóÖ´ÐÐһЩɨβµÄ¹¤×÷¡£ÈκÎÔÚBEGINÖ®ºóÁгöµÄ²Ù×÷£¨ÔÚ{}ÄÚ£©½«ÔÚawk¿ªÊ¼É¨ÃèÊäÈë֮ǰִÐУ¬¶øENDÖ®ºóÁгöµÄ²Ù×÷½«ÔÚɨÃèÍêÈ«²¿µÄÊäÈëÖ®ºóÖ´ÐС£Òò´Ë£¬Í¨³£Ê¹ÓÃBEGINÀ´ÏÔʾ±äÁ¿ºÍÔ¤Ö㨳õʼ»¯£©±äÁ¿£¬Ê¹ÓÃENDÀ´Êä³ö×îÖÕ½á¹û¡£
Àý£ºÀÛ¼ÆÏúÊÛÎļþxsÖеÄÏúÊÛ½ð¶î£¨¼ÙÉèÏúÊÛ½ð¶îÔڼǼµÄµÚÈý×ֶΣ©£º
$awk
>'BEGIN { FS=":";print "ͳ¼ÆÏúÊÛ½ð¶î";total=0}
>{print $3;total=total+$3;}
>END {printf "ÏúÊÛ½ð¶î×ܼƣº%.2f",total}' sx
£¨×¢£º>ÊÇshellÌṩµÄµÚ¶þÌáʾ·û£¬ÈçÒªÔÚshell³ÌÐòawkÓï¾äºÍawkÓïÑÔÖл»ÐУ¬ÔòÐèÔÚÐÐβ¼Ó·´Ð±¸Ü£©
ÔÚÕâÀBEGINÔ¤ÖÃÁËÄÚ²¿±äÁ¿FS£¨×ֶηָô·û£©ºÍ×Ô¶¨Òå±äÁ¿total,ͬʱÔÚɨÃè֮ǰÏÔʾ³öÊä³öÐÐÍ·¡£¶øENDÔòÔÚɨÃèÍê³Éºó´òÓ¡³ö×ܺϼơ£
2¡¢Á÷³Ì¿ØÖÆÓï¾ä
awkÌṩÁËÍ걸µÄÁ÷³Ì¿ØÖÆÓï¾ä£¬ÆäÓ÷¨ÓëCÓïÑÔÀàËÆ¡£ÏÂÃæÎÒÃÇÒ»Ò»¼ÓÒÔ˵Ã÷£º
2.1¡¢if...elseÓï¾ä:
¸ñʽ£º
if(±í´ïʽ)
Óï¾ä1
else
Óï¾ä2
¸ñʽÖÐ"Óï¾ä1"¿ÉÒÔÊǶà¸öÓï¾ä£¬Èç¹ûÄãΪÁË·½±ãawkÅжÏÒ²·½±ãÄã×ÔÒÑÔĶÁ£¬Äã×îºÃ½«¶à¸öÓï¾äÓÃ{}À¨ÆðÀ´¡£awk·ÖÖ¦½á¹¹ÔÊÐíǶÌ×£¬Æä¸ñʽΪ£º
if(±í´ïʽ1£©
{if(±í´ïʽ2£©
Óï¾ä1
else
Óï¾ä2
}
Óï¾ä3
else {if(±í´ïʽ3)
Óï¾ä4
else
Óï¾ä5
}
Óï¾ä6
µ±È»Êµ¼Ê²Ù×÷¹ý³ÌÖÐÄã¿ÉÄܲ»»áÓõ½Èç´Ë¸´ÔӵķÖÖ¦½á¹¹£¬ÕâÀïÖ»ÊÇΪÁ˸ø³öÆäÑùʽ°ÕÁË¡£
2.2¡¢whileÓï¾ä
¸ñʽΪ:
while(±í´ïʽ)
Óï¾ä
2.3¡¢do-whileÓï¾ä
¸ñʽΪ:
do
{
Óï¾ä
}while(Ìõ¼þÅжÏÓï¾ä£©
2.4¡¢forÓï¾ä
¸ñʽΪ£º
for(³õʼ±í´ïʽ;ÖÕÖ¹Ìõ¼þ;²½³¤±í´ïʽ)
{Óï¾ä}
ÔÚawkµÄ while¡¢do-whileºÍforÓï¾äÖÐÔÊÐíʹÓÃbreak,continueÓï¾äÀ´¿ØÖÆÁ÷³Ì×ßÏò£¬Ò²ÔÊÐíʹÓÃexitÕâÑùµÄÓï¾äÀ´Í˳ö¡£breakÖжϵ±Ç°ÕýÔÚÖ´ÐеÄÑ»·²¢Ìøµ½Ñ»·ÍâÖ´ÐÐÏÂÒ»ÌõÓï¾ä¡£continue´Óµ±Ç°Î»ÖÃÌøµ½Ñ»·¿ªÊ¼´¦Ö´ÐС£¶ÔÓÚexitµÄÖ´ÐÐÓÐÁ½ÖÖÇé¿ö£ºµ±exitÓï¾ä²»ÔÚENDÖÐʱ£¬ÈκβÙ×÷ÖеÄexitÃüÁî±íÏÖµÃÈçͬµ½ÁËÎļþ⣬ËùÓÐģʽ»ò²Ù×÷Ö´Ðн«Í£Ö¹£¬ENDģʽÖеIJÙ×÷±»Ö´ÐС£¶ø³öÏÖÔÚENDÖеÄexit½«µ¼Ö³ÌÐòÖÕÖ¹¡£
awkÖеÄ×Ô¶¨Ò庯Êý
¶¨ÒåºÍµ÷ÓÃÓû§×Ô¼ºµÄº¯ÊýÊǼ¸ºõÿ¸ö¸ß¼¶ÓïÑÔ¶¼¾ßÓеŦÄÜ£¬awkÒ²²»ÀýÍ⣬µ«ÔʼµÄawk²¢²»Ìṩº¯Êý¹¦ÄÜ£¬Ö»ÓÐÔÚnawk»ò½ÏеÄawk°æ±¾ÖвſÉÒÔÔö¼Óº¯Êý¡£
º¯ÊýµÄʹÓðüº¬Á½²¿·Ö£ºº¯ÊýµÄ¶¨ÒåÓ뺯Êýµ÷Óá£ÆäÖк¯Êý¶¨ÒåÓÖ°üÀ¨ÒªÖ´ÐеĴúÂ루º¯Êý±¾Éí£©ºÍ´ÓÖ÷³ÌÐò´úÂë´«µÝµ½¸Ãº¯ÊýµÄÁÙʱµ÷Óá£
awkº¯ÊýµÄ¶¨Òå·½·¨ÈçÏ£º
function º¯ÊýÃû(²ÎÊý±í){
º¯ÊýÌå
}
ÔÚgawkÖÐÔÊÐí½«functionÊ¡ÂÔΪfunc£¬µ«ÆäËü°æ±¾µÄawk²»ÔÊÐí¡£º¯ÊýÃû±ØÐëÊÇÒ»¸öºÏ·¨µÄ±êÖ¾·û£¬²ÎÊý±íÖпÉÒÔ²»Ìṩ²ÎÊý£¨µ«ÔÚµ÷Óú¯Êýʱº¯ÊýÃûºóµÄÒ»¶ÔÀ¨ºÅÈÔÈ»ÊDz»¿ÉȱÉٵģ©£¬Ò²¿ÉÒÔÌṩһ¸ö»ò¶à¸ö²ÎÊý¡£ÓëCÓïÑÔÏàËÆ£¬awkµÄ²ÎÊýÒ²ÊÇͨ¹ýÖµÀ´´«µÝµÄ¡£
ÔÚawkÖе÷Óú¯Êý±È½Ï¼òµ¥£¬Æä·½·¨ÓëCÓïÑÔÏàËÆ£¬µ«awk±ÈCÓïÑÔ¸üΪÁé»î£¬Ëü²»Ö´ÐвÎÊýÓÐЧÐÔ¼ì²é¡£»»¾ä»°Ëµ£¬ÔÚÄãµ÷Óú¯Êýʱ£¬¿ÉÒÔÁгö±Èº¯ÊýÔ¤¼Æ£¨º¯Êý¶¨ÒåÖй涨£©µÄ¶à»òÉٵIJÎÊý£¬¶àÓàµÄ²ÎÊý»á±»awkËùºöÂÔ£¬¶ø²»×ãµÄ²ÎÊý£¬awk½«ËüÃÇÖÃΪȱʡֵ0»ò¿Õ×Ö·û´®£¬¾ßÌåÖÃΪºÎÖµ£¬½«È¡¾öÓÚ²ÎÊýµÄʹÓ÷½Ê½¡£
awkº¯ÊýÓÐÁ½ÖÖ·µ»Ø·½Ê½£ºÒþʽ·µ»ØºÍÏÔʽ·µ»Ø¡£µ±awkÖ´Ðе½º¯ÊýµÄ½áβʱ£¬Ëü×Ô¶¯µØ·µ»Øµ½µ÷ÓóÌÐò£¬ÕâÊǺ¯ÊýÊÇÒþʽ·µ»ØµÄ¡£Èç¹ûÐèÒªÔÚ½áÊø֮ǰÍ˳öº¯Êý£¬¿ÉÒÔÃ÷È·µØʹÓ÷µ»ØÓï¾äÌáÇ°Í˳ö¡£·½·¨ÊÇÔÚº¯ÊýÖÐʹÓÃÐÎÈ磺return ·µ»ØÖµ ¸ñʽµÄÓï¾ä¡£
Àý£ºÏÂÃæµÄÀý×ÓÑÝʾÁ˺¯ÊýµÄʹÓá£ÔÚÕâ¸öʾÀýÖУ¬¶¨ÒåÁËÒ»¸öÃûΪprint_headerµÄº¯Êý£¬¸Ãº¯Êýµ÷ÓÃÁËÁ½¸ö²ÎÊýFileNameºÍPageNum£¬FileName²ÎÊý´«¸øº¯Êýµ±Ç°Ê¹ÓõÄÎļþÃû£¬PageNum²ÎÊýÊǵ±Ç°Ò³µÄÒ³ºÅ¡£Õâ¸öº¯ÊýµÄ¹¦ÄÜÊÇ´òÓ¡£¨ÏÔʾ£©³öµ±Ç°ÎļþµÄÎļþÃû£¬ºÍµ±Ç°Ò³µÄÒ³ºÅ¡£Íê³ÉÕâ¸ö¹¦Äܺó£¬Õâ¸öº¯Êý½«·µ»ØÏÂÒ»Ò³µÄÒ³ºÅ¡£
nawk
>'BEGIN{pageno=1;file=FILENAME
>pageno=print_header(file£¬pageno)£»#µ÷Óú¯Êýprint_header
>printf("µ±Ç°Ò³Ò³ºÅÊÇ£º%d ",pageno);
>}
>#¶¨Ò庯Êýprint_header
>function print_header(FileName,PageNum){
>printf("%s %d ",FileName,PageNum); >PageNum++;return PageNUm;
>}
>}' myfile
Ö´ÐÐÕâ¸ö³ÌÐò½«ÏÔʾÈçÏÂÄÚÈÝ£º
myfile 1
µ±Ç°Ò³Ò³ºÅÊÇ£º2
awk¸ß¼¶ÊäÈëÊä³ö
1.¶ÁÈ¡ÏÂÒ»Ìõ¼Ç¼£º
awkµÄnextÓï¾äµ¼ÖÂawk¶ÁÈ¡ÏÂÒ»¸ö¼Ç¼²¢Íê³ÉģʽƥÅ䣬ȻºóÁ¢¼´Ö´ÐÐÏàÓ¦µÄ²Ù×÷¡£Í¨³£ËüÓÃÆ¥ÅäµÄģʽִÐвÙ×÷ÖеĴúÂë¡£nextµ¼ÖÂÕâ¸ö¼Ç¼µÄÈκζîÍâÆ¥Åäģʽ±»ºöÂÔ¡£
2.¼òµ¥µØ¶ÁÈ¡Ò»Ìõ¼Ç¼
awkµÄ getlineÓï¾äÓÃÓÚ¼òµ¥µØ¶ÁÈ¡Ò»Ìõ¼Ç¼¡£Èç¹ûÓû§ÓÐÒ»¸öÊý¾Ý¼Ç¼ÀàËÆÁ½¸öÎïÀí¼Ç¼£¬ÄÇôgetline½«ÓÈÆäÓÐÓá£ËüÍê³ÉÒ»°ã×ֶεķÖÀë(ÉèÖÃ×ֶαäÁ¿$0 FNR NF NR)¡£Èç¹û³É¹¦Ôò·µ»Ø1£¬Ê§°ÜÔò·µ»Ø0£¨µ½´ïÎļþ⣩¡£Èç¹ûÐè¼òµ¥µØ¶ÁÈ¡Ò»¸öÎļþ£¬Ôò¿ÉÒÔ±àдÒÔÏ´úÂ룺
Àý£ºÊ¾ÀýgetlineµÄʹÓÃ
{while(getline==1)
{
#process the inputted fields
}
}
Ò²¿ÉÒÔʹgetline±£´æÊäÈëÊý¾ÝÔÚÒ»¸ö×Ö¶ÎÖУ¬¶ø²»ÊÇͨ¹ýʹÓÃgetline variableµÄÐÎʽ´¦ÀíÒ»°ã×ֶΡ£µ±Ê¹ÓÃÕâÖÖ·½Ê½Ê±£¬NF±»ÖóÉ0£¬FNRºÍNR±»ÔöÖµ¡£
Óû§Ò²¿ÉÒÔʹÓÃgetline<"filename"·½Ê½´ÓÒ»¸ö¸ø¶¨µÄÎļþÖÐÊäÈëÊý¾Ý£¬¶ø²»ÊÇ´ÓÃüÁîÐÐËùÁÐÄÚÈÝÊäÈëÊý¾Ý¡£´Ëʱ£¬getline½«Íê³ÉÒ»°ã×ֶηÖÀ루ÉèÖÃ×ֶαäÁ¿$0ºÍNF)¡£Èç¹ûÎļþ²»´æÔÚ£¬·µ»Ø-1,³É¹¦£¬·µ»Ø1,·µ»Ø0±íʾʧ°Ü¡£Óû§¿ÉÒÔ´Ó¸ø¶¨ÎļþÖжÁÈ¡Êý¾Ýµ½Ò»¸ö±äÁ¿ÖУ¬Ò²¿ÉÒÔÓÃstdin(±ê×¼ÊäÈëÉ豸£©»òÒ»¸ö°üº¬Õâ¸öÎļþÃûµÄ±äÁ¿´úÌæfilename¡£ÖµµÃ×¢ÒâµÄÊǵ±Ê¹ÓÃÕâÖÖ·½Ê½Ê±²»ÐÞ¸ÄFNRºÍNR¡£
ÁíÒ»ÖÖʹÓÃgetlineÓï¾äµÄ·½·¨ÊÇ´ÓUNIXÃüÁî½ÓÊÜÊäÈ룬ÀýÈçÏÂÃæµÄÀý×Ó:
Àý£ºÊ¾Àý´ÓUNIXÃüÁî½ÓÊÜÊäÈë
{while("who -u"|getline)
{
#process each line from the who command
}
}
µ±È»£¬Ò²¿ÉÒÔʹÓÃÈçÏÂÐÎʽ:
"command" | getline variable
3.¹Ø±ÕÎļþ:
awkÖÐÔÊÐíÔÚ³ÌÐòÖйرÕÒ»¸öÊäÈë»òÊä³öÎļþ£¬·½·¨ÊÇʹÓÃawkµÄcloseÓï¾ä¡£
close("filename")
filename¿ÉÒÔÊÇgetline´ò¿ªµÄÎļþ£¨Ò²¿ÉÒÔÊÇstdin,°üº¬ÎļþÃûµÄ±äÁ¿»òÕßgetlineʹÓõÄÈ·ÇÐÃüÁ¡£»òÒ»¸öÊä³öÎļþ£¨¿ÉÒÔÊÇstdout£¬°üº¬ÎļþÃûµÄ±äÁ¿»òʹÓùܵÀµÄÈ·ÇÐÃüÁ¡£
4.Êä³öµ½Ò»¸öÎļþ:
awkÖÐÔÊÐíÓÃÈçÏ·½Ê½½«½á¹ûÊä³öµ½Ò»¸öÎļþ£º
printf("hello word! ")>"datafile"
»ò
printf("hello word! ")>>"datafile"
5.Êä³öµ½Ò»¸öÃüÁî
awkÖÐÔÊÐíÓÃÈçÏ·½Ê½½«½á¹ûÊä³öµ½Ò»¸öÃüÁ
printf("hello word! ")|"sort-t','"