[Ubuntu-zh] 回复: awk1line中文版

zechao wang wzc0066在yahoo.com.cn
星期日 四月 27 05:05:15 BST 2008


ºÃÌû£¬ÊÕÏ£¡

Yisu Dong <ximiff在gmail.com> дµÀ£º AWKÊǸöºÜÇ¿µÄÎı¾´¦Àí¹¤¾ß£¬awk1line¸ü·¢»ÓÁËAWKÁé»î¼òµ¥µÄÌØÐÔ¡£
 ËÑË÷ÁËһϷ¢ÏÖ»¹Ã»ÓÐawk1lineµÄÖÐÎİ棬ËùÒÔ×Ô¼º·­ÒëÁËһϣ¬¿ÉÄܶԴó¼Ò»áÓеã°ïÖú£º£©
  
 ================================================================

AWKµ¥Ðнű¾¿ìËٲο¼                                      2003Äê7ÔÂ22ÈÕ
±à¼­£º Eric Pement <pemente在northpark.edu>                °æ±¾ 0.22
·­Ò룺 yisudong      <yisudong在gmail.com>
   ×îÐÂÓ¢Îİ汾Îļþ·¢²¼ÔÚÒÔϵØÖ·£º
   http://www.student.northpark.edu/pemente/awk/awk1line.txt    ×îÐÂÖÐÎÄ·­Òë°æ±¾Îļþ·¢²¼ÔÚÒÔϵØÖ·£º    http://ximix.org/translation/awk1line_zh-CN.txt  Ó÷¨£º      Unix:  awk '/pattern/ {print "$1"}'    # ±ê×¼ Unix shell»·¾³  DOS/Win:  awk '/pattern/ {print "$1"}'    # DJGPP ¿É±àÒëͨ¹ý            awk "/pattern/ {print \"$1\"}"  # ÐèÒª°²×° Mingw32   ÎҵĴó¶àÊý¾­ÑéÀ´×ÔÓÚWin32µÄGNU awk £¨gawk£©°æ±¾¡£ÐèÒªÌØ±ð×¢ÒâµÄÊÇ£¬DJGPP ±àÒëÆ÷¿ÉÒÔÔÊÐíawk½Å±¾Ê¹ÓÃUnixµÄÒýºÅÓï·¨ '/like/ {"this"}'¡£µ«ÊÇ£¬Óû§±Ø ÐëÖªµÀÔÚDOS/Windows»·¾³Ï£¬µ¥ÒýºÅ²¢²»Äܱ£»¤Öض¨Ïò·ûºÅ£¨<, >£©ºÍ¹ÜµÀ£¨|£©¡£  Èç¹ûʹÓÃË«ÒýºÅµÄ»°£¬ÔÚDOS/CMDÃüÁî½âÊÍÆ÷ϵÄÌØÊâ·ûºÅºÍËûÃǵÄÌØÊ⺬Òå¶¼ »á±»ºöÂÔ¡£Í¬Ñù£¬DOS/WinÓû§±ØÐë¼ÇסÓ㬰ٷֺţ¨%£©ÓÃÀ´±ê¼ÇDOS/Win»·¾³±äÁ¿£¬ Èç¹ûÏëÒªÔÚawkʹÓõϰ£¬ÐèҪʹÓÃË«°Ù·ÖºÅ£¨%%£©À´±íʾһ¸ö°Ù·ÖºÅ%¡£  Èç¹ûÎÒÄÜÈ·¶¨Ò»¸ö½Å±¾²»ÐèÒª±»Ö¸³öÊÇʹÓÃÔÚUnix, DOS»òÕßCMD»·¾³Ï£¬ÎÒͨ³£ ²»×÷³öÌáʾ¡£Èç¹ûÒ»¸öÀý×ÓÊÇGNU awkËùÌØÓе쬽«»áÓà 'gawk'ÃüÁîÀ´´úÌæ¡£Èç
 ¹ûÄã·¢ÏÖ´íÎó»òÕßеÄÃüÁîÏëÒªÌí¼Óµ½Õâ¸öÁбíÀ×ܳ¤¶È¿ØÖÆÔÚ65¸ö×Ö·ûһϣ© £¬Çë֪ͨÎÒ¡£Ê×ÏÈÎÒ¾­³£»á³¢ÊÔȥдһ¸ö×î¶Ì×Ö·ûµÄ½Å±¾¡£  Îı¾¼ä¸ô£º   # ÿÐкóÃæÔö¼ÓÒ»ÐпÕÐÐ  awk '1;{print ""}'  awk 'BEGIN{ORS="\n\n"};1'   # ÿÐкóÃæÔö¼ÓÒ»ÐпÕÐС£Êä³öÎļþ²»»á°üº¬Á¬ÐøµÄÁ½¸ö»òÁ½¸öÒÔÉϵĿÕÐÐ   # ×¢Ò⣺ÔÚUnixϵͳ£¬ DOSÐаüÀ¨µÄ CRLF £¨\r\n£© ͨ³£»á±»×÷Ϊ·Ç¿ÕÐжԴý  # Òò´Ë 'NF' ½«»á·µ»ØTRUE¡£  awk 'NF{print $0 "\n"}'   # ÿÐкóÃæÔö¼ÓÁ½ÐпÕÐÐ  awk '1;{print "\n"}'  ±àºÅºÍ¼ÆË㣺   # ÒÔÎļþΪµ¥Î»£¬ÔÚÿ¾äÐÐǰ¼ÓÉϱàºÅ £¨×ó¶ÔÆë£©.  # ʹÓÃÖÆ±í·û £¨\t£© À´´úÌæ¿Õ¸ñ¿ÉÒÔÓÐЧ±£»¤Ò³±äµÄ¿Õ°×¡£  awk '{print FNR "\t" $0}' files*   # ÓÃÖÆ±í·û £¨\t£© ¸øËùÓÐÎļþ¼ÓÉÏÁ¬¹áµÄ±àºÅ¡£  awk '{print NR "\t" $0}' files*   # number each line of a file £¨number on left, right-aligned£©  # Double the percent signs if typing from the DOS command prompt.  awk '{printf("%5d : %s\n", NR,$0)}'   # ¸ø·Ç¿Õ°×ÐеÄÐмÓÉϱàºÅ  # ¼ÇµÃUnix¶ÔÓÚ \r µÄ´¦ÀíµÄÌØÊâÖ®´¦¡££¨ÉÏÃæÒѾ­Ìáµ½£©  awk 'NF{$0=++a " :" $0};{print}'  awk '{print (NF?
 ++a " :" :"") $0}'   # ¼ÆËãÐÐÊý £¨Ä£Äâ "wc -l"£©  awk 'END{print NR}'   # ¼ÆËãÿÐÐÿ¸öÇøÓòÖ®ºÍ  awk '{s=0; for (i=1; i<=NF; i++) s=s+$i; print s}'   # ¼ÆËãËùÓÐÐÐËùÓÐÇøÓòµÄ×ÜºÍ  awk '{for (i=1; i<=NF; i++) s=s+$i}; END{print s}'   # ´òӡÿÐÐÃ¿ÇøÓòµÄ¾ø¶ÔÖµ  awk '{for (i=1; i<=NF; i++) if ($i < 0) $i = -$i; print }'  awk '{for (i=1; i<=NF; i++) $i = ($i < 0) ? -$i : $i; print }'   # ¼ÆËãËùÓÐÐÐËùÓÐÇøÓò£¨´Ê£©µÄ¸öÊý  awk '{ total = total + NF }; END {print total}' file   # ´òÓ¡°üº¬ "Beth" µÄÐÐÊý  awk '/Beth/{n++}; END {print n+0}' file   # ´òÓ¡µÚÒ»ÁÐ×î´óµÄÐÐ  # ²¢ÇÒÔÚÐÐǰ´òÓ¡³öÕâ¸ö×î´óµÄÊý  awk '$1 > max {max=$1; maxline=$0}; END{ print max, maxline}'   # ´òӡÿÐеÄÁÐÊý£¬²¢ÔÚºóÃæ¸úÉÏ´ËÐÐÄÚÈÝ  awk '{ print NF ":" $0 } '   # ´òӡÿÐеÄ×îºóÒ»ÁÐ  awk '{ print $NF }'   # ´òÓ¡×îºóÒ»ÐеÄ×îºóÒ»ÁÐ  awk '{ field = $NF }; END{ print field }'   # ´òÓ¡ÁÐÊý³¬¹ý4µÄÐÐ  awk 'NF > 4'   # ´òÓ¡×îºóÒ»ÁдóÓÚ4µÄÐÐ  awk '$NF > 4'   Îı¾×ª»»ºÍÌæ´ú£º   # ÔÚUnix»·¾³£º×ª»»DOSÐÂÐÐ £¨CR/LF£© ΪUnix¸ñʽ  awk
 '{sub(/\r$/,"");print}'   # ¼ÙÉèÿÐж¼ÒÔCtrl-M½áβ   # ÔÚUnix»·¾³£º×ª»»UnixÐÂÐÐ £¨LF£© ΪDOS¸ñʽ  awk '{sub(/$/,"\r");print}   # ÔÚDOS»·¾³£º×ª»»UnixÐÂÐÐ £¨LF£© ΪDOS¸ñʽ  awk 1   # ÔÚDOS»·¾³£º×ª»»DOSÐÂÐÐ £¨CR/LF£© ΪUnix¸ñʽ  # DOS°æ±¾µÄawk²»ÄÜÔËÐÐ, Ö»ÄÜÓÃgawk:  gawk -v BINMODE="w" '1' infile >outfile   # Óà "tr" Ìæ´úµÄ·½·¨¡£  tr -d \r <infile >outfile            # GNU tr °æ±¾Îª 1.22 »òÕ߸ü¸ß   # ɾ³ýÿÐÐǰµÄ¿Õ°×£¨°üÀ¨¿Õ¸ñ·ûºÍÖÆ±í·û£©  # ʹËùÓÐÎı¾×ó¶ÔÆë  awk '{sub(/^[ \t]+/, ""); print}'   # ɾ³ýÿÐнáβµÄ¿Õ°×£¨°üÀ¨¿Õ¸ñ·ûºÍÖÆ±í·û£©  awk '{sub(/[ \t]+$/, "");print}'   # ɾ³ýÿÐпªÍ·ºÍ½áβµÄËùÓпհף¨°üÀ¨¿Õ¸ñ·ûºÍÖÆ±í·û£©  awk '{gsub(/^[ \t]+|[ \t]+$/,"");print}'  awk '{$1=$1;print}'           # ÿÁÐÖ®¼äµÄ¿Õ°×Ò²±»É¾³ý   # ÔÚÿһÐпªÍ·´¦²åÈë5¸ö¿Õ¸ñ £¨×öÕûÒ³µÄ×óÎ»ÒÆ£©  awk '{sub(/^/, "     ");print}'   # ÓÃ79¸ö×Ö·ûΪ¿í¶È£¬½«È«²¿Îı¾ÓÒ¶ÔÆë  awk '{printf "%79s\n", $0}' file*   # ÓÃ79¸ö×Ö·ûΪ¿í¶È£¬½«È«²¿Îı¾¾ÓÖÐ¶ÔÆë  awk '{l=length();s=int((79-l)/2); printf "%"(s+l)"s\n",$0}'
 file*   # ÿÐÐÓà "bar" ²éÕÒÌæ»» "foo"  awk '{sub(/foo/,"bar");print}'           # ½ö½öÌæ»»µÚÒ»¸öÕÒµ½µÄ"foo"  gawk '{$0=gensub(/foo/,"bar",4);print}'  # ½ö½öÌæ»»µÚËĸöÕÒµ½µÄ"foo"  awk '{gsub(/foo/,"bar");print}'          # È«²¿Ìæ»»   # ÔÚ°üº¬ "baz" µÄÐÐÀ½« "foo" Ìæ»»Îª "bar"  awk '/baz/{gsub(/foo/, "bar")};{print}'   # ÔÚ²»°üº¬ "baz" µÄÐÐÀ½« "foo" Ìæ»»Îª "bar"  awk '!/baz/{gsub(/foo/, "bar")};{print}'   # ½« "scarlet" »òÕß "ruby" »òÕß "puce" Ìæ»»Îª "red"  awk '{gsub(/scarlet|ruby|puce/, "red"); print}'   # µ¹ÅÅÎı¾ £¨Ä£Äâ "tac"£©  awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }' file*   # Èç¹ûÒ»ÐнáβΪ·´Ð±Ïß·û£¬½«ÏÂÒ»Ðнӵ½ÕâÐкóÃæ  # £¨Èç¹ûÓÐÁ¬Ðø¶àÐкóÃæ´ø·´Ð±Ïß·û£¬½«»áʧ°Ü£©  awk '/\\$/ {sub(/\\$/,""); getline t; print $0 t; next}; 1' file*   # ÅÅÐò²¢´òÓ¡ËùÓеǼÓû§µÄÐÕÃû  awk -F ":" '{ print $1 | "sort" }' /etc/passwd   # ÒÔÏà·´µÄ˳Ðò´òÓ¡³öÿÐеÄǰÁ½ÁÐ  awk '{print $2, $1}' file   # µ÷»»Ç°Á½ÁеÄλÖà  awk '{temp = $1; $1 = $2; $2 = temp}' file   #
 ´òӡÿÐУ¬²¢É¾³ýµÚ¶þÁÐ  awk '{ $2 = ""; print }'   # µ¹ÖÃÿÐв¢´òÓ¡  awk '{for (i=NF; i>0; i--) printf("%s ",i);printf ("\n")}' file   # ɾ³ýÖØ¸´Á¬ÐøµÄÐÐ £¨Ä£Äâ "uniq"£©  awk 'a !~ $0; {a=$0}'   # ɾ³ýÖØ¸´µÄ¡¢·ÇÁ¬ÐøµÄÐÐ  awk '! a[$0]++'                     # ×î¼òÁ·  awk '!($0 in a) {a[$0];print}'      # ×îÓÐЧ   # ÓöººÅÁ´½Óÿ5ÐÐ  awk 'ORS=%NR%5?",":"\n"' file  #bug awk 'ORS=NR%5?",":"\n"' file    Ñ¡ÔñÐԵĴòӡijЩÐУº   # ´òÓ¡ÎļþµÄǰʮÐÐ £¨Ä£Äâ "head"£©  awk 'NR < 11'   # ´òÓ¡ÎļþµÄµÚÒ»ÐÐ £¨Ä£Äâ "head -1"£©  awk 'NR>1{exit};1'    # ´òÓ¡ÎļþµÄ×îºóÁ½ÐÐ £¨Ä£Äâ "tail -2"£©  awk '{y=x "\n" $0; x=$0};END{print y}'   # ´òÓ¡ÎļþµÄ×îºóÒ»ÐÐ £¨Ä£Äâ "tail -1"£©  awk 'END{print}'   # ´òÓ¡Æ¥ÅäÕýÔò±í´ïʽµÄÐÐ £¨Ä£Äâ "grep"£©  awk '/regex/'   # ´òÓ¡²»Æ¥ÅäÕýÔò±í´ïʽµÄÐÐ £¨Ä£Äâ "grep -v"£©  awk '!/regex/'   # ´òÓ¡Æ¥ÅäÕýÔò±í´ïʽµÄǰһÐУ¬µ«ÊDz»´òÓ¡µ±Ç°ÐÐ  awk '/regex/{print x};{x=$0}'  awk '/regex/{print (x=="" ? "match on line 1" : x)};{x=$0}'   #
 ´òÓ¡Æ¥ÅäÕýÔò±í´ïʽµÄºóÒ»ÐУ¬µ«ÊDz»´òÓ¡µ±Ç°ÐÐ  awk '/regex/{getline;print}'   # ÒÔÈκÎ˳Ðò²éÕÒ°üº¬ AAA¡¢BBB ºÍ CCC µÄÐÐ  awk '/AAA/; /BBB/; /CCC/'   # ÒÔÖ¸¶¨Ë³Ðò²éÕÒ°üº¬ AAA¡¢BBB ºÍ CCC µÄÐÐ  awk '/AAA.*BBB.*CCC/'   # ´òÓ¡³¤¶È´óÓÚ64¸ö×Ö½ÚµÄÐÐ  awk 'length > 64'   # ´òÓ¡³¤¶ÈСÓÚ64¸ö×Ö½ÚµÄÐÐ  awk 'length < 64'   # ´òÓ¡´ÓÆ¥ÅäÕýÔòÆðµ½ÎļþĩβµÄÄÚÈÝ  awk '/regex/,0'  awk '/regex/,EOF'   # ´òÓ¡Ö¸¶¨ÐÐÖ®¼äµÄÄÚÈÝ £¨8-12ÐÐ, °üÀ¨µÚ8ºÍµÚ12ÐУ©  awk 'NR==8,NR==12'   # ´òÓ¡µÚ52ÐÐ  awk 'NR==52'  awk 'NR==52 {print;exit}'          # ¶ÔÓÚ´óÎļþ¸üÓÐЧÂÊ   # ´òÓ¡Á½¸öÕýÔòÆ¥Åä¼äµÄÄÚÈÝ £¨°üÀ¨ÕýÔòµÄÄÚÈÝ£©  awk '/Iowa/,/Montana/'             # ´óСдÃô¸Ð   Ñ¡ÔñÐÔµÄɾ³ýijЩÐУº   # ɾ³ýËùÓпհ×ÐÐ £¨ÀàËÆÓÚ "grep '.' "£©  awk NF  awk '/./'   ÖÂл£º  ÌØ±ð¸Ðл Peter S. Tillier °ïÖúÎÒÍê³ÉÁËÒ»°æµÄFAQ¡£  ¸ü¶àµÄÓï·¨Ö¸Á°üÀ¨ÓÃÎļþ½Å±¾À´Ê¹ÓÃawk£¬¿ÉÒԲο¼ÈçÏ£º  "sed & awk, 2nd Edition," by Dale Dougherty and Arnold Robbins   O'Reilly, 1997 "UNIX Text Processing," by Dale Dougherty and Tim O'Reilly   Hayden
 Books, 1987 "Effective awk Programming, 3rd Edition." by Arnold Robbins   O'Reilly, 2001  ΪÁËÄÜ¿ª·¢awkµÄÇ¿´ó¹¦ÄÜ£¬¿ª·¢ÈËÔ±±ØÐëÖªµÀ "ÕýÔò±í´ïʽ"¡£¹ØÓÚÕýÔò µÄÏêϸÌÖÂÛ£¬¿ÉÒԲ鿴  "Mastering Regular Expressions, 2d edition" by Jeffrey Friedl    £¨O'Reilly, 2002£©¡£  UnixϵͳµÄÓû§°ïÖúÊÖ²á»áºÜÓÐÓ㬣¨³¢ÊÔ "man awk"£¬"man nawk"£¬"man regexp" »òÕß°ïÖúÊÖ²áÀïÕýÔò±í´ïʽµÄÏà¹ØÕ½ڣ©£¬µ«ÊDz鿴°ïÖúÊÖ²á¿ÉÊÇÓÐÃûµÄÀ§ÄÑ:) ÒòΪËûÃDz»ÊÇΪawkºÍÕýÔòµÄÐÂÊÖËùд£¬¶øÊÇ×÷ΪÓо­ÑéÈËÔ±µÄ²Î¿¼Êֲᡣ  ÔÚawk½Å±¾ÀïÃæÊ¹Óà '\t'£ºÎªÁËʹÎĵµ±äµÃÇåÎú£¬ÎÒÃÇÔڽű¾ÀïʹÓÃÁ˱í´ïʽ'\t' À´ÏÔʾһ¸öÖÆ±í·û £¨0x99£©¡£ËùÓÐawkµÄ°æ±¾£¬ÉõÖÁUNIXϵͳ7µÄ°æ±¾Ó¦¸ÃÄÜÈϳö '\t'ÕâÖÖËõд¡£  #---Îļþ½áβ--- 

 -- 
ubuntu-zh mailing list
ubuntu-zh在lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh




       
---------------------------------
 ÑÅ»¢ÓÊÏ䣬ÄúµÄÖÕÉúÓÊÏ䣡
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20080427/4b62daa7/attachment-0002.htm 


More information about the ubuntu-zh mailing list