ÕÆÎÕ Linux awk ÏÂÁîÖÜÈ«Ö¸ÄÏ
±¾ÎÄÏ꾡ÐðÊöÁË linux ϵͳÖÐ awk ÏÂÁîµÄʹÓÃÖ¸ÄÏ£¬º¸ÇÁËÆäÓ÷¨ºÍ³£ÓÃÑ¡Ïî¡£ÎÒÃÇÉîÈë̽ÌÖÁËËüµÄÀúÊ·ÒÔ¼°ÎªºÎÔÚÎı¾´¦ÀíʹÃüÖкÜÊÇÖ÷Òª¡£ÎÒÃÇ»¹ÌṩÁËÏÖʵʾÀý£¬²¢Õ¹Ê¾ÁËһЩ¸ß¼¶¹¦Ð§¡£±¾Ö¸ÄϵÄÄ¿µÄÊÇ×ÊÖúÐÂÊÖÓû§Ã÷È·²¢¸ßЧµØʹÓà awk ÏÂÁî¡£
˵Ã÷
±¾ÆªÎÄÕµÄÄ¿µÄÊÇΪLinux³õѧÕßÌṩһ¸öÏêϸµÄÖ¸ÄÏ£¬ËûÃÇÏ£ÍûÏàʶawkÏÂÁî¡£ÄÚÈÝ°üÀ¨ÀúÊ·Åä¾°¡¢Ó÷¨¡¢³£¼ûºÍ¸ß¼¶²ÎÊýÒÔ¼°ÏÖʵʾÀý¡£
ÀúÊ·
awk ÏÂÁîÔÚ Linux ÖÐÓÉ Alfred Aho¡¢Peter Weinberger ºÍ Brian Kernighan ÓÚ 1970 ÄêÔÂÒýÈ루¸ÃÏÂÁîʹÓÃÁËËûÃǵÄÐÕÃûÊ××ÖĸÃüÃû£©¡£ËüÊÇÒ»ÖÖÓÃÓÚ²Ù×÷Êý¾ÝºÍÌìÉú±¨¸æµÄ¾ç±¾ÓïÑÔ¡£
ºÎʱÒÔ¼°ÎªºÎʹÓÃËü
awk ÊÇÒ»ÖÖÇ¿Ê¢µÄÓÃÓÚÎı¾´¦ÀíµÄ¹¤¾ß¡£Äú¿ÉÒÔʹÓÃawk¶ÁÈ¡Îı¾Îļþ£¬²¢ÖðÐС¢Öð×ֶεش¦ÀíÊý¾Ý£¬´Ó¶øºÜÊÇÊʺÏÊý¾ÝÌáÈ¡ºÍ±¨¸æÌìÉú¡£
ÔõÑùʹÓÃËü
awk ÏÂÁîµÄ»ù±¾Óï·¨ÊÇ awk ¡®pattern {action}¡¯ file-name¡£
linuxmi@linuxmi ~/www.linuxmi.com % echo "Hello World£¡LinuxÃÔwww.linuxmi.com" | awk '{print $1}'Hello
µÇ¼ºó¸´ÖÆ
³£ÓòÎÊý
-F ¨C ÉèÖÃ×Ö¶ÎÍÑÀë·û¡£
linuxmi@linuxmi ~/www.linuxmi.com % echo "Hello:World:LinuxÃÔwww.linuxmi.com" | awk -F':' '{print $3}'LinuxÃÔwww.linuxmi.com
µÇ¼ºó¸´ÖÆ
-v ¨C Ϊ±äÁ¿¸³Öµ¡£
% echo | awk -v var="Hello World www.linuxmi.com" '{print var}'Hello World www.linuxmi.com
µÇ¼ºó¸´ÖÆ
ÆäËûÖ§³ÖµÄ²ÎÊý£º
-f ¨C Ö¸¶¨°üÀ¨ awk ¾ç±¾µÄÎļþ¡£
-m[fr] ¨C Ö¸¶¨ÄÚ´æÏÞÖÆ¡£
-O ¨C ÆôÓÃÓÅ»¯Àú³Ì¡£
×î³£¼ûµÄÓÃÀý
awk ÏÂÁîÆÕ±éÓÃÓÚÎı¾´¦ÀíʹÃü£¬ÈçÌáÈ¡×ֶΡ¢ÅÌËã»ã×ܺÍÃûÌû¯Êä³ö¡£
linuxmi@linuxmi ~/www.linuxmi.com % cat linuxmi.txt | awk '{sum += $1} END {print sum}'
µÇ¼ºó¸´ÖÆ
×ܺͣ¨ÈôÊÇ linuxmi.txt °üÀ¨µÚÒ»¸ö×Ö¶ÎÖеÄÊý×ÖÖµ£©
¼¼ÇÉÐԵĸ߼¶¹¦Ð§
ËäÈ» awk ¿ÉÓÃÓÚ¼òÆÓµÄÎı¾´¦ÀíʹÃü£¬µ«ËüÒ²Ö§³Ö¸ß¼¶¹¦Ð§£¬ÈçÊý×éºÍº¯Êý¡£
linuxmi@linuxmi ~/www.linuxmi.com % echo -e "1\n2\n3\n4\n5" | awk '{array[i++]=$1} END {for (j=i-1; j>=0; j--) print array[j]}'
µÇ¼ºó¸´ÖÆ
ÐèҪעÖصÄÊÂÏî
Ö÷ÒªµÄÊÇÒª¼Ç×Å£¬awk °´ÐкÍ×Ö¶ÎÖðÐд¦ÀíÎı¾£¬Ëü½«Ã¿ÐÐÊÓΪµ¥¶ÀµÄ¼Í¼£¬Ã¿¸öµ¥´ÊÊÓΪµ¥¶ÀµÄ×ֶΡ£
×ܽá
ÔÚLinuxÖУ¬awkÏÂÁîÊÇÒ»ÖÖÇ¿Ê¢¶øÎÞаµÄ¹¤¾ß£¬ÓÃÓÚÎı¾´¦Àí¡£Ò»×îÏÈ¿ÉÄÜ»á¸ÐÊÜÖش󣬵«Ëæ×Åʵ¼ù£¬Äú»á·¢Ã÷ËüÊÇ Linux ¹¤¾ß°üÖбز»¿ÉÉٵIJ¿·Ö¡£
ÒÔÉϾÍÊÇÕÆÎÕ Linux awk ÏÂÁîÖÜÈ«Ö¸ÄϵÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡