[Ubuntu-zh] awk1line中文版
Yisu Dong
ximiff在gmail.com
星期六 四月 26 01:41:28 BST 2008
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'ÕâÖÖËõд¡£
#---Îļþ½áβ---
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20080426/5814c479/attachment-0002.htm
More information about the ubuntu-zh
mailing list