[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