{"id":1734,"date":"2017-02-02T19:41:44","date_gmt":"2017-02-02T11:41:44","guid":{"rendered":"http:\/\/cn.hostease.com\/xueyuan\/?p=1734"},"modified":"2024-11-15T15:10:36","modified_gmt":"2024-11-15T07:10:36","slug":"awk%e7%94%a8%e6%b3%95%e8%af%a6%e8%a7%a3","status":"publish","type":"post","link":"https:\/\/cn.hostease.com\/xueyuan\/jishu\/linux\/awk%e7%94%a8%e6%b3%95%e8%af%a6%e8%a7%a3\/","title":{"rendered":"awk\u7528\u6cd5\u8be6\u89e3"},"content":{"rendered":"<div><\/div>\n<div><\/div>\n<div>awk: \u4e2d\u6587\u610f\u601d\u662f\u62a5\u544a\u751f\u6210\u5668 \u80fd\u591f\u6839\u636e\u6211\u4eec\u8f93\u5165\u7684\u4fe1\u606f\uff0c\u5c06\u4fe1\u606f\u683c\u5f0f\u5316\u4ee5\u540e\u663e\u793a\uff0c\u5c06\u5b9a\u4e49\u597d\u7684\u4fe1\u606f\u4ee5\u6bd4\u8f83\u7f8e\u89c2\uff08\u76f4\u89c2\uff09\u7684\u65b9\u5f0f\u663e\u793a\u51fa\u6765\u51fa\u73b0\u6bd4\u8f83\u65e9\uff0c\u7ee7\u800c\u51fa\u73b0\u4e86new awk\uff08nawk\uff09\u5728windows\u4e0a\u5b9e\u73b0\uff0cgawk, awk\u5b9e\u73b0\u5728linux\u4e0a\u3002awk\u662f\u4e00\u79cd\u7f16\u7a0b\u8bed\u8a00\uff0c\u7528\u4e8e\u5728linux\/unix\u4e0b\u5bf9\u6587\u672c\u548c\u6570\u636e\u8fdb\u884c\u5904\u7406\u3002\u6570\u636e\u53ef\u4ee5\u6765\u81ea\u6807\u51c6\u8f93\u5165\u3001\u4e00\u4e2a\u6216\u591a\u4e2a\u6587\u4ef6\uff0c\u6216\u5176\u5b83\u547d\u4ee4\u7684\u8f93\u51fa\u3002\u5b83\u652f\u6301\u7528\u6237\u81ea\u5b9a\u4e49\u51fd\u6570\u548c\u52a8\u6001\u6b63\u5219\u8868\u8fbe\u5f0f\u7b49\u5148\u8fdb\u529f\u80fd\uff0c\u662flinux\/unix\u4e0b\u7684\u4e00\u4e2a\u5f3a\u5927\u7f16\u7a0b\u5de5\u5177\u3002\u5b83\u5728\u547d\u4ee4\u884c\u4e2d\u4f7f\u7528\uff0c\u4f46\u66f4\u591a\u662f\u4f5c\u4e3a\u811a\u672c\u6765\u4f7f\u7528\u3002awk\u7684\u5904\u7406\u6587\u672c\u548c\u6570\u636e\u7684\u65b9\u5f0f\u662f\u8fd9\u6837\u7684\uff0c\u5b83\u9010\u884c\u626b\u63cf\u6587\u4ef6\uff0c\u4ece\u7b2c\u4e00\u884c\u5230\u6700\u540e\u4e00\u884c\uff0c\u5bfb\u627e\u5339\u914d\u7684\u7279\u5b9a\u6a21\u5f0f\u7684\u884c\uff0c\u5e76\u5728\u8fd9\u4e9b\u884c\u4e0a\u8fdb\u884c\u4f60\u60f3\u8981\u7684\u64cd\u4f5c\u3002\u5982\u679c\u6ca1\u6709\u6307\u5b9a\u5904\u7406\u52a8\u4f5c\uff0c\u5219\u628a\u5339\u914d\u7684\u884c\u663e\u793a\u5230\u6807\u51c6\u8f93\u51fa(\u5c4f\u5e55)\uff0c\u5982\u679c\u6ca1\u6709\u6307\u5b9a\u6a21\u5f0f\uff0c\u5219\u6240\u6709\u88ab\u64cd\u4f5c\u6240\u6307\u5b9a\u7684\u884c\u90fd\u88ab\u5904\u7406\u3002awk\u5206\u522b\u4ee3\u8868\u5176\u4f5c\u8005\u59d3\u6c0f\u7684\u7b2c\u4e00\u4e2a\u5b57\u6bcd\uff0c\u5206\u522b\u662fAlfred Aho\u3001Brian Kernighan\u3001Peter Weinberger\u3002gawk\u662fawk\u7684GNU\u7248\u672c\uff0c\u5b83\u63d0\u4f9b<\/div>\n<div><\/div>\n<div>\u4e86Bell\u5b9e\u9a8c\u5ba4\u548cGNU\u7684\u4e00\u4e9b\u6269\u5c55\u3002\u4e0b\u9762\u5c31\u5bf9awk\u8fdb\u884c\u4ecb\u7ecd\u3002<\/div>\n<div><\/div>\n<div>awk\u4f7f\u7528\u7684\u57fa\u672c\u683c\u5f0f\uff1a<\/div>\n<div><\/div>\n<div>1<\/div>\n<div>2<\/div>\n<div>3<\/div>\n<div># awk [options] &#8216;script&#8217; file1 file2, &#8230;<\/div>\n<div># awk [options] &#8216;PATTERN { action }&#8217; file1 file2, &#8230;\u7ec6\u5316\u4e86\u4e0a\u9762\u7684\u7ec4\u5408<\/div>\n<div>\u5e38\u7528\u7684\u547d\u4ee4\uff1aprint\uff08\u8f93\u51fa\uff09, printf\uff08\u6253\u5370\uff09<\/div>\n<div>awk\u5de5\u4f5c\u8fc7\u7a0b<\/div>\n<div><\/div>\n<div>\u6839\u636e\u6211\u4eec\u6240\u5b9a\u4e49\u7684\u6a21\u5f0f\uff0c\u4e00\u6b21\u4ece\u6587\u4ef6\u4e2d\u8bfb\u53d6\u4e00\u884c\u6587\u672c\uff0cawk\u4f1a\u5bf9\u53d6\u51fa\u7684\u6587\u672c\u505a\u76f8\u5e94\u7684\u5207\u7247\uff0c\u5c06\u6bcf\u4e00\u884c\u6309\u7167\u5206\u9694\u7b26\u8fdb\u884c\u5207\u5272\uff0c\u5047\u5982\u6211\u4eec\u6709\u4e00\u884c\u6587\u672c\uff1a this is a test.\u5b83\u4f1a\u4f7f\u7528\u7a7a\u767d\u5b57\u7b26\u5f53\u505a\u5206\u9694\u7b26\uff0c\u5c06\u5b83\u4eec\u5404\u4e2a\u5206\u5f00\uff0c\u5207\u5272\u6210\u4e86\u56db\u4e2a\u7247\uff0c\u5206\u522b\u4e3a\uff1a this is a test.\u8fd9\u56db\u4e2a\u7247\uff0c\u53ef\u4ee5\u4f7f\u7528\u53d8\u91cf\uff0c\u5206\u522b\u5bf9\u5e94\u4e3a$1,$2,$3,$4\u4ee3\u8868\u56db\u4e2a\u5207\u5272\u7247\uff0c\u4e0b\u9762\u5c31\u505a\u4e00\u4e2a\u6f14\u793a\uff0c\u770b\u5982\u4f55\u5b9e\u73b0awk\u7684\u5f3a\u5927\u529f\u80fd<\/div>\n<div><\/div>\n<div>\u4e00\u3001awk\u7684\u8f93\u51fa\uff1aprint<\/div>\n<div><\/div>\n<div>1<\/div>\n<div>2<\/div>\n<div>print\u7684\u4f7f\u7528\u683c\u5f0f\uff1a<\/div>\n<div>print item1, item2, &#8230;<\/div>\n<div>\u8f93\u51fa\u8981\u70b9\uff1a<\/div>\n<div><\/div>\n<div>1\u3001\u5404\u9879\u76ee\u4e4b\u95f4\u4f7f\u7528\u9017\u53f7\u9694\u5f00\uff0c\u800c\u8f93\u51fa\u65f6\u5219\u4ee5\u7a7a\u767d\u5b57\u7b26\u5206\u9694\uff1b<\/div>\n<div><\/div>\n<div>2\u3001\u8f93\u51fa\u7684item\u53ef\u4ee5\u4e3a\u5b57\u7b26\u4e32\u6216\u6570\u503c\u3001\u5f53\u524d\u8bb0\u5f55\u7684\u5b57\u6bb5(\u5982$1)\u3001\u53d8\u91cf\u6216awk\u7684\u8868\u8fbe\u5f0f\uff1b\u6570\u503c\u4f1a\u5148\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\uff0c\u800c\u540e\u518d\u8f93\u51fa\uff1b<\/div>\n<div><\/div>\n<div>3\u3001print\u547d\u4ee4\u540e\u9762\u7684item\u53ef\u4ee5\u7701\u7565\uff0c\u6b64\u65f6\u5176\u529f\u80fd\u76f8\u5f53\u4e8eprint $0, \u56e0\u6b64\uff0c\u5982\u679c\u60f3\u8f93\u51fa\u7a7a\u767d\u884c\uff0c\u5219\u9700\u8981\u4f7f\u7528print &#8220;&#8221;\uff1b<\/div>\n<div><\/div>\n<div>\u5b9e\u4f8b\u5206\u6790\uff1a<\/div>\n<div><\/div>\n<div>\u663e\u793a\u6574\u4e2a\u6587\u672c\uff08\u6ce8\u610f\uff0c\u8fd9\u91cc\u53ea\u662f\u6d4b\u8bd5\uff0c\u6240\u4ee5\u53ea\u6709\u4e00\u884c\uff09<\/div>\n<div># \u00a0awk &#8216;{print $N}&#8217; test.txt<\/div>\n<div>this is a test.<\/div>\n<div># awk &#8216;{print $0}&#8217; test.txt<\/div>\n<div>this is a test.<\/div>\n<div>\u663e\u793a\u6587\u672c\u7684\u4e00\u884c\u4e2d\u7684\u7b2c\u4e00\u4e2a\u53c2\u6570<\/div>\n<div># awk &#8216;{print $1}&#8217; test.txt<\/div>\n<div>this<\/div>\n<div>\u663e\u793a\u6587\u672c\u7684\u4e00\u884c\u4e2d\u7684\u7b2c\u4e8c\u4e2a\u53c2\u6570<\/div>\n<div># awk &#8216;{print $2}&#8217; test.txt<\/div>\n<div>is<\/div>\n<div>\u663e\u793a\u6587\u672c\u7684\u4e00\u884c\u4e2d\u7684\u7b2c\u56db\u4e2a\u53c2\u6570<\/div>\n<div># awk &#8216;{print $4}&#8217; test.txt<\/div>\n<div>test.<\/div>\n<div>\u663e\u793a\u6587\u672c\u7684\u4e00\u884c\u4e2d\u7684\u7b2c\u4e00\u4e0e\u7b2c\u4e8c\u4e2a\u4e2a\u53c2\u6570<\/div>\n<div># awk &#8216;{print $1,$2}&#8217; test.txt<\/div>\n<div>this is<\/div>\n<div>\u663e\u793a\u6587\u672c\u7684\u4e00\u884c\u4e2d\u7684\u7b2c\u4e00\u4e2a\u4e0e\u7b2c\u4e8c\u4e2a\u53c2\u6570\uff0c\u4e2d\u95f4\u53ef\u4ee5\u52a0#\u53f7<\/div>\n<div># awk &#8216;BEGIN{OFS=&#8221;#&#8221;}{print $1,$2}&#8217; test.txt<\/div>\n<div>this#is<\/div>\n<div>\u663e\u793a\u6587\u672c\u4e2d\u7684\u5404\u4e2a\u53c2\u6570\uff0c\u8fd8\u53ef\u4ee5\u52a0\u4fee\u9970\u7b26<\/div>\n<div># awk &#8216;BEGIN{OFS=&#8221;:&#8221;}{print $1,$2,$3,$4}&#8217; test.txt<\/div>\n<div>this:is:a:test.<\/div>\n<div>\u663e\u793a\u6587\u672c\u4e2d\u7684\u53c2\u6570\uff0c\u8fd8\u53ef\u4ee5\u52a0\u4fee\u9970\u7b26\uff0c\u8fd8\u53ef\u4ee5\u52a0\u5b57\u7b26\u4e32<\/div>\n<div># \u00a0awk &#8216;BEGIN{OFS=&#8221;:&#8221;}{print $1,&#8221;hello&#8221;,$2}&#8217; test.txt<\/div>\n<div>this:hello:is<\/div>\n<div>\u8f93\u51fa\u4e09\u884c\uff0c\u6ce8\u610f\u6362\u884c\u9700\u8981\u52a0\\n<\/div>\n<div># awk &#8216;BEGIN { print &#8220;line one\\nline two\\nline three&#8221; }&#8217;<\/div>\n<div>line one<\/div>\n<div>line two<\/div>\n<div>line three<\/div>\n<div>\u4e8c\u3001awk\u53d8\u91cf<\/div>\n<div><\/div>\n<div>2.1 awk\u5185\u7f6e\u53d8\u91cf\u4e4b\u8bb0\u5f55\u53d8\u91cf\uff1a<\/div>\n<div><\/div>\n<div>1<\/div>\n<div>2<\/div>\n<div>3<\/div>\n<div>4<\/div>\n<div>FS: field separator\uff0c\u8bfb\u53d6\u6587\u672c\u65f6\u6240\u4f7f\u7528\u7684\u5b57\u6bb5\u5206\u9694\u7b26<\/div>\n<div>RS: Record separator\uff0c\u8bfb\u53d6\u6587\u672c\u4fe1\u606f\u6240\u4f7f\u7528\u7684\u6362\u884c\u7b26<\/div>\n<div>OFS: Output Filed Separator: \u8f93\u51fa\u6587\u672c\u65f6\u4f7f\u7528\u7684\u5b57\u6bb5\u5206\u9694\u7b26<\/div>\n<div>ORS\uff1aOutput Row Separator\uff1a\u8f93\u51fa\u6587\u672c\u65f6\u4f7f\u7528\u7684\u884c\u5206\u9694\u7b26<\/div>\n<div>2.2 awk\u5185\u7f6e\u53d8\u91cf\u4e4b\u6570\u636e\u53d8\u91cf\uff1a<\/div>\n<div><\/div>\n<div>NR: The number of input records\uff0cawk\u547d\u4ee4\u6240\u5904\u7406\u7684\u8bb0\u5f55\u6570\uff1b\u5982\u679c\u6709\u591a\u4e2a\u6587\u4ef6\uff0c\u8fd9\u4e2a\u6570\u76ee\u4f1a\u628a\u5904\u7406\u7684\u591a\u4e2a\u6587\u4ef6\u4e2d\u884c\u7edf\u4e00\u8ba1\u6570\uff1b<\/div>\n<div><\/div>\n<div>NF\uff1aNumber of Field\uff0c\u5f53\u524d\u8bb0\u5f55\u7684field\u4e2a\u6570\uff1b<\/div>\n<div><\/div>\n<div>FNR: \u4e0eNR\u4e0d\u540c\u7684\u662f\uff0cFNR\u7528\u4e8e\u8bb0\u5f55\u6b63\u5904\u7406\u7684\u884c\u662f\u5f53\u524d\u8fd9\u4e00\u6587\u4ef6\u4e2d\u88ab\u603b\u5171\u5904\u7406\u7684\u884c\u6570\uff1b<\/div>\n<div><\/div>\n<div>\u5b9e\u4f8b\u5206\u6790\uff1a<\/div>\n<div><\/div>\n<div>\u663e\u793a\u6587\u672c\u7684\u884c\u6570<\/div>\n<div># awk &#8216;{print NR}&#8217; test.txt<\/div>\n<div>1<\/div>\n<div>\u663e\u793a\u4e00\u884c\u603b\u5171\u6709\u51e0\u4e2a\u53c2\u6570<\/div>\n<div># awk &#8216;{print NF}&#8217; test.txt<\/div>\n<div>4<\/div>\n<div>\u663e\u793a\u6587\u672c\u7684\u6700\u540e\u4e00\u4e2a\u53c2\u6570<\/div>\n<div># awk &#8216;{print $NF}&#8217; test.txt<\/div>\n<div>test.<\/div>\n<div>\u540c\u65f6\u67e5\u770b\u591a\u4e2a\u6587\u672c<\/div>\n<div># awk &#8216;{print FNR}&#8217; test.txt \/etc\/fstab<\/div>\n<div>1 \u00a0\u663e\u793a\u7684\u662f\u7b2c\u4e00\u4e2a\u6587\u672c\u7684\u884c\u6570<\/div>\n<div>1 \u00a0\u663e\u793a\u7684\u662f\u7b2c\u4e8c\u4e2a\u6587\u672c\u7684\u7b2c\u4e00\u884c\u6570\uff0c\u4e00\u6b64\u7c7b\u63a8<\/div>\n<div>2 \u00a0\u663e\u793a\u7684\u662f\u7b2c\u4e8c\u4e2a\u6587\u672c\u7684\u7b2c\u4e8c\u884c\u6570<\/div>\n<div>3 \u00a0\u663e\u793a\u7684\u662f\u7b2c\u4e8c\u4e2a\u6587\u672c\u7684\u7b2c\u4e09\u884c\u6570<\/div>\n<div>ARGV: \u6570\u7ec4\uff0c\u4fdd\u5b58\u547d\u4ee4\u884c\u672c\u8eab\u8fd9\u4e2a\u5b57\u7b26\u4e32\uff0c\u5982awk &#8216;{print $0}&#8217; a.txt b.txt\u8fd9\u4e2a\u547d\u4ee4\u4e2d\uff0cARGV[0]\u4fdd\u5b58awk\uff0cARGV[1]\u4fdd\u5b58a.txt\uff1b<\/div>\n<div><\/div>\n<div>ARGC: awk\u547d\u4ee4\u7684\u53c2\u6570\u7684\u4e2a\u6570\uff1b<\/div>\n<div><\/div>\n<div>FILENAME: awk\u547d\u4ee4\u6240\u5904\u7406\u7684\u6587\u4ef6\u7684\u540d\u79f0\uff1b<\/div>\n<div><\/div>\n<div>ENVIRON\uff1a\u5f53\u524dshell\u73af\u5883\u53d8\u91cf\u53ca\u5176\u503c\u7684\u5173\u8054\u6570\u7ec4\uff1b<\/div>\n<div><\/div>\n<div>1<\/div>\n<div>2<\/div>\n<div>3<\/div>\n<div>4<\/div>\n<div>\u67e5\u770b\u73af\u5883\u53d8\u91cf<\/div>\n<div># awk &#8216;BEGIN{print ENVIRON[&#8220;PATH&#8221;]}&#8217;<\/div>\n<div>\/usr\/kerberos\/sbin:\/usr\/kerberos\/bin:\/usr\/local\/sbin:\/usr\/local\/bin:\/sbin:\/<\/div>\n<div>bin:\/usr\/sbin:\/usr\/bin:\/usr\/local\/apache\/bin:\/usr\/local\/mysql\/bin:\/root\/bin<\/div>\n<div>2.3 \u7528\u6237\u81ea\u5b9a\u4e49\u53d8\u91cf<\/div>\n<div><\/div>\n<div>gawk\u5141\u8bb8\u7528\u6237\u81ea\u5b9a\u4e49\u81ea\u5df1\u7684\u53d8\u91cf\u4ee5\u4fbf\u5728\u7a0b\u5e8f\u4ee3\u7801\u4e2d\u4f7f\u7528\uff0c\u53d8\u91cf\u540d\u547d\u540d\u89c4\u5219\u4e0e\u5927\u591a\u6570\u7f16\u7a0b\u8bed\u8a00\u76f8\u540c\uff0c\u53ea\u80fd\u4f7f\u7528\u5b57\u6bcd\u3001\u6570\u5b57\u548c\u4e0b\u5212\u7ebf\uff0c\u4e14\u4e0d\u80fd\u4ee5\u6570\u5b57\u5f00\u5934\u3002gawk\u53d8\u91cf\u540d\u79f0\u533a\u5206\u5b57\u7b26\u5927\u5c0f\u5199\u3002<\/div>\n<div><\/div>\n<div>2.3.1 \u5728\u811a\u672c\u4e2d\u8d4b\u503c\u53d8\u91cf<\/div>\n<div><\/div>\n<div>\u5728gawk\u4e2d\u7ed9\u53d8\u91cf\u8d4b\u503c\u4f7f\u7528\u8d4b\u503c\u8bed\u53e5\u8fdb\u884c<\/div>\n<div><\/div>\n<div>2.3.2 \u5728\u547d\u4ee4\u884c\u4e2d\u4f7f\u7528\u8d4b\u503c\u53d8\u91cf<\/div>\n<div><\/div>\n<div>gawk\u547d\u4ee4\u4e5f\u53ef\u4ee5\u5728\u201c\u811a\u672c\u201d\u5916\u4e3a\u53d8\u91cf\u8d4b\u503c\uff0c\u5e76\u5728\u811a\u672c\u4e2d\u8fdb\u884c\u5f15\u7528\u3002<\/div>\n<div><\/div>\n<div>\u5b9e\u4f8b\u5206\u6790\uff1a<\/div>\n<div><\/div>\n<div>1<\/div>\n<div>2<\/div>\n<div>3<\/div>\n<div>4<\/div>\n<div>5<\/div>\n<div>\u8f93\u51fa\u4e00\u4e2a\u53d8\u91cf\uff0c\u5e76\u8d4b\u503c<\/div>\n<div># awk &#8216;BEGIN{var=&#8221;variable testing&#8221;;print var}&#8217;<\/div>\n<div>variable testing<\/div>\n<div># awk -v var=&#8221;variable testing&#8221; &#8216;BEGIN{print var}&#8217;<\/div>\n<div>variable testing<\/div>\n<div>\u4e09\u3001awk\u6253\u5370\u5de5\u5177\uff1aprintf<\/div>\n<div><\/div>\n<div>1<\/div>\n<div>2<\/div>\n<div>printf\u547d\u4ee4\u7684\u4f7f\u7528\u683c\u5f0f\uff1a<\/div>\n<div>printf format, item1, item2, &#8230;<\/div>\n<div>printf\u8981\u70b9\uff1a<\/div>\n<div><\/div>\n<div>1\u3001\u5176\u4e0eprint\u547d\u4ee4\u7684\u6700\u5927\u4e0d\u540c\u662f\uff0cprintf\u9700\u8981\u6307\u5b9aformat\uff1b<\/div>\n<div><\/div>\n<div>2\u3001format\u7528\u4e8e\u6307\u5b9a\u540e\u9762\u7684\u6bcf\u4e2aitem\u7684\u8f93\u51fa\u683c\u5f0f\uff1b<\/div>\n<div><\/div>\n<div>3\u3001printf\u8bed\u53e5\u4e0d\u4f1a\u81ea\u52a8\u6253\u5370\u6362\u884c\u7b26\uff1b\u9700\u8981\u6dfb\u52a0\\n<\/div>\n<div><\/div>\n<div>format\u683c\u5f0f\u7684\u6307\u793a\u7b26\u90fd\u4ee5%\u5f00\u5934\uff0c\u540e\u8ddf\u4e00\u4e2a\u5b57\u7b26\uff1b\u5982\u4e0b\uff1a<\/div>\n<div><\/div>\n<div>%c: \u663e\u793a\u7b2c\u4e00\u4e2a\u53c2\u6570\u7684\u7b2c\u4e00\u4e2a\u5b57\u7b26<\/div>\n<div><\/div>\n<div>%d, %i\uff1a\u5341\u8fdb\u5236\u6574\u6570\uff1b<\/div>\n<div><\/div>\n<div>%e, %E\uff1a\u79d1\u5b66\u8ba1\u6570\u6cd5\u663e\u793a\u6570\u503c\uff1b<\/div>\n<div><\/div>\n<div>%f: \u663e\u793a\u6d6e\u70b9\u6570\uff1b<\/div>\n<div><\/div>\n<div>%g, %G: \u4ee5\u79d1\u5b66\u8ba1\u6570\u6cd5\u7684\u683c\u5f0f\u6216\u6d6e\u70b9\u6570\u7684\u683c\u5f0f\u663e\u793a\u6570\u503c\uff1b<\/div>\n<div><\/div>\n<div>%s: \u663e\u793a\u5b57\u7b26\u4e32\uff1b<\/div>\n<div><\/div>\n<div>%u: \u65e0\u7b26\u53f7\u6574\u6570\uff1b<\/div>\n<div><\/div>\n<div>%%: \u663e\u793a%\u81ea\u8eab\uff1b<\/div>\n<div><\/div>\n<div>\u4fee\u9970\u7b26\uff1a<\/div>\n<div><\/div>\n<div>N: \u663e\u793a\u5bbd\u5ea6\uff1b<\/div>\n<div><\/div>\n<div>-: \u5de6\u5bf9\u9f50\uff1b<\/div>\n<div><\/div>\n<div>+\uff1a\u663e\u793a\u6570\u503c\u7b26\u53f7\uff1b<\/div>\n<div><\/div>\n<div>\u4e3e\u4f8b\u5206\u6790\uff1a<\/div>\n<div><\/div>\n<div># awk &#8216;{printf &#8220;%c\\n&#8221;,$1}&#8217; test.txt<\/div>\n<div>t \u663e\u793a\u7b2c\u4e00\u4e2a\u53c2\u6570\u7684\u7b2c\u4e00\u4e2a\u5b57\u6bcd<\/div>\n<div># awk &#8216;{printf &#8220;%s\\n&#8221;,$1}&#8217; test.txt<\/div>\n<div>this \u00a0\u663e\u793a\u7b2c\u4e00\u4e2a\u53c2\u6570<\/div>\n<div># awk &#8216;{printf &#8220;%10s\\n&#8221;,$1}&#8217; test.txt<\/div>\n<div>\u00a0 \u00a0 \u00a0 this \u663e\u793a\u65f6\u7528\u4e8610\u4e2a\u5b57\u7b26\u4e32\uff0c\u9ed8\u8ba4\u662f\u53f3\u5bf9\u9f50<\/div>\n<div># awk &#8216;{printf &#8220;%-10s\\n&#8221;,$1}&#8217; test.txt<\/div>\n<div>this \u00a0\u663e\u793a\u65f6\u5de6\u5bf9\u9f50\uff0c\u540e\u9762\u67096\u4e2a\u7a7a\u5b57\u7b26\u4e32<\/div>\n<div># awk &#8216;{printf &#8220;%-10s,%-10s\\n&#8221;,$1,$2}&#8217; test.txt<\/div>\n<div>this \u00a0 \u00a0 \u00a0,is<\/div>\n<div># awk &#8216;{printf &#8220;%-10s%-10s\\n&#8221;,$1,$2}&#8217; test.txt<\/div>\n<div>this \u00a0 \u00a0 \u00a0is<\/div>\n<div># awk -F: &#8216;{printf &#8220;%5d&#8221;,$3}&#8217; \/etc\/passwd<\/div>\n<div>\u00a0 \u00a0 0 \u00a0 \u00a01 \u00a0 \u00a02 \u00a0 \u00a03 \u00a0 \u00a04 \u00a0 \u00a05 \u00a0 \u00a06 \u00a0 \u00a07 \u00a0 \u00a08 \u00a0 \u00a09 \u00a0 10 \u00a0 11 \u00a0 12 \u00a0 13 \u00a0 14 \u00a0 99 \u00a0 81 \u00a0 28 \u00a069 \u00a0 77 \u00a0 38 \u00a0 70 \u00a0 32 \u00a0 47 \u00a0 51 \u00a0 74 \u00a0 16 \u00a0 68 \u00a0100 \u00a0 2965534 \u00a0 43 \u00a0 42 \u00a0500 \u00a0501 \u00a0502 \u00a05032002 2003 2004 4004 2033 2034 4005 4006 4007 4011 4017 4018 4019 4026 4027 4028 \u00a0 48 \u00a0 25 \u00a0101<\/div>\n<div># awk -F: &#8216;{printf &#8220;%-5d\\n&#8221;,$3}&#8217; \/etc\/passwd \u00a0 \u5de6\u5bf9\u9f50<\/div>\n<div># awk -F: &#8216;{printf &#8220;%+5d\\n&#8221;,$3}&#8217; \/etc\/passwd \u00a0 \u53f3\u5bf9\u9f50<\/div>\n<div># awk -F: &#8216;{printf &#8220;%-15s %i\\n&#8221;,$1,$3}&#8217; test.txt<\/div>\n<div>this is a test. 0<\/div>\n<div>\u56db\u3001\u8f93\u51fa\u91cd\u5b9a\u5411<\/div>\n<div><\/div>\n<div>print items &gt; output-file<\/div>\n<div>print items &gt;&gt; output-file<\/div>\n<div>print items | command<\/div>\n<div>\u7279\u6b8a\u6587\u4ef6\u63cf\u8ff0\u7b26\uff1a<\/div>\n<div>\/dev\/stdin\uff1a\u6807\u51c6\u8f93\u5165<\/div>\n<div>\/dev\/sdtout: \u6807\u51c6\u8f93\u51fa<\/div>\n<div>\/dev\/stderr: \u9519\u8bef\u8f93\u51fa<\/div>\n<div>\/dev\/fd\/N: \u67d0\u7279\u5b9a\u6587\u4ef6\u63cf\u8ff0\u7b26\uff0c\u5982\/dev\/stdin\u5c31\u76f8\u5f53\u4e8e\/dev\/fd\/0\uff1b<\/div>\n<div>\u4f8b\u5b50\uff1a<\/div>\n<div># awk -F: &#8216;{printf &#8220;%-15s %i\\n&#8221;,$1,$3 &gt; &#8220;\/dev\/stderr&#8221; }&#8217; \/etc\/passwd<\/div>\n<div>root \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a00<\/div>\n<div>bin \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 1<\/div>\n<div>daemon \u00a0 \u00a0 \u00a0 \u00a0 \u00a02<\/div>\n<div>adm \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 3<\/div>\n<div>lp \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a04<\/div>\n<div>sync \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a05<\/div>\n<div>shutdown \u00a0 \u00a0 \u00a0 \u00a06<\/div>\n<div>halt \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a07<\/div>\n<div>\u4e94\u3001awk\u7684\u64cd\u4f5c\u7b26\uff1a<\/div>\n<div><\/div>\n<div>5.1 \u7b97\u672f\u64cd\u4f5c\u7b26\uff1a<\/div>\n<div><\/div>\n<div>-x: \u8d1f\u503c<\/div>\n<div><\/div>\n<div>+x: \u8f6c\u6362\u4e3a\u6570\u503c\uff1b<\/div>\n<div><\/div>\n<div>x^y:<\/div>\n<div><\/div>\n<div>x**y: \u6b21\u65b9<\/div>\n<div><\/div>\n<div>x*y: \u4e58\u6cd5<\/div>\n<div><\/div>\n<div>x\/y\uff1a\u9664\u6cd5<\/div>\n<div><\/div>\n<div>x+y:<\/div>\n<div><\/div>\n<div>x-y:<\/div>\n<div><\/div>\n<div>x%y:<\/div>\n<div><\/div>\n<div>5.2 \u5b57\u7b26\u4e32\u64cd\u4f5c\u7b26\uff1a<\/div>\n<div><\/div>\n<div>\u53ea\u6709\u4e00\u4e2a\uff0c\u800c\u4e14\u4e0d\u7528\u5199\u51fa\u6765\uff0c\u7528\u4e8e\u5b9e\u73b0\u5b57\u7b26\u4e32\u8fde\u63a5\uff1b<\/div>\n<div><\/div>\n<div>5.3 \u8d4b\u503c\u64cd\u4f5c\u7b26\uff1a<\/div>\n<div><\/div>\n<div>=\u3001+=\u3001-=\u3001*=\u3001\/=\u3001%=\u3001^=\u3001**=\u3001++\u3001&#8211;<\/div>\n<div><\/div>\n<div>\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u5982\u679c\u67d0\u6a21\u5f0f\u4e3a=\u53f7\uff0c\u6b64\u65f6\u4f7f\u7528\/=\/\u53ef\u80fd\u4f1a\u6709\u8bed\u6cd5\u9519\u8bef\uff0c\u5e94\u4ee5\/[=]\/\u66ff\u4ee3\uff1b<\/div>\n<div><\/div>\n<div>5.4 \u5e03\u5c14\u503c<\/div>\n<div><\/div>\n<div>awk\u4e2d\uff0c\u4efb\u4f55\u975e0\u503c\u6216\u975e\u7a7a\u5b57\u7b26\u4e32\u90fd\u4e3a\u771f\uff0c\u53cd\u4e4b\u5c31\u4e3a\u5047\uff1b<\/div>\n<div><\/div>\n<div>5.5 \u6bd4\u8f83\u64cd\u4f5c\u7b26\uff1a<\/div>\n<div><\/div>\n<div>x &lt; y \u00a0 \u00a0 \u00a0x\u5c0f\u4e8ey\u4e3a\u771f\uff0c\u53cd\u4e4b\u4e3a\u5047<\/div>\n<div>x &lt;= y \u00a0 \u00a0 x\u5c0f\u4e8e\u7b49\u4e8ey\u4e3a\u771f\uff0c\u53cd\u4e4b\u4e3a\u5047<\/div>\n<div>x &gt; y \u00a0 \u00a0 \u00a0x\u5927\u4e8ey\u4e3a\u771f\uff0c\u53cd\u4e4b\u4e3a\u5047<\/div>\n<div>x &gt;= y \u00a0 \u00a0 x\u5927\u4e8e\u7b49\u4e8ey\u4e3a\u771f\uff0c\u53cd\u4e4b\u4e3a\u5047<\/div>\n<div>x == y \u00a0 \u00a0x\u6052\u7b49\u4e8ey\u4e3a\u771f\uff0c\u53cd\u4e4b\u4e3a\u5047<\/div>\n<div>x != y \u00a0 \u00a0x\u4e0d\u7b49\u4e8ey\u4e3a\u771f\uff0c\u53cd\u4e4b\u4e3a\u5047<\/div>\n<div>x ~ y \u00a0 True if the string x matches the regexp denoted by y.<\/div>\n<div>x !~ y \u00a0True if the string x does not match the regexp denoted by y.<\/div>\n<div>subscript in array \u00a0 \u00a0True if the array array has an element with the<\/div>\n<div>subscript subscript.<\/div>\n<div>5.5 \u8868\u8fbe\u5f0f\u95f4\u7684\u903b\u8f91\u5173\u7cfb\u7b26\uff1a<\/div>\n<div><\/div>\n<div>&amp;&amp;\uff1a \u903b\u8f91\u4e0e<\/div>\n<div><\/div>\n<div>|| \uff1a\u903b\u8f91\u6216<\/div>\n<div><\/div>\n<div>5.6 \u6761\u4ef6\u8868\u8fbe\u5f0f\uff1a\u76f8\u5f53\u4e8eif\u8bed\u53e5<\/div>\n<div><\/div>\n<div>\u4e3e\u4f8b\uff1a\u82e5a\u5927\u4e8eb\uff0c\u5219\u53d6a is max\uff0c\u53cd\u4e4b\u53d6b is max<\/div>\n<div>a=3<\/div>\n<div>b=4<\/div>\n<div>a&gt;b?a is max:b is max<\/div>\n<div>5.7 \u51fd\u6570\u8c03\u7528\uff1a<\/div>\n<div><\/div>\n<div>function_name (para1,para2)<\/div>\n<div><\/div>\n<div>\u516d\u3001awk\u7684\u6a21\u5f0f\uff1a<\/div>\n<div><\/div>\n<div>awk &#8216;program&#8217; input-file1 input-file2 &#8230;<\/div>\n<div><\/div>\n<div>\u5176\u4e2d\u7684program\u4e3a:<\/div>\n<div><\/div>\n<div>pattern { action }<\/div>\n<div><\/div>\n<div>pattern { action }<\/div>\n<div><\/div>\n<div>&#8230;<\/div>\n<div><\/div>\n<div>6.1 \u5e38\u89c1\u7684\u6a21\u5f0f\u7c7b\u578b\uff1a<\/div>\n<div><\/div>\n<div>1\u3001Regexp: \u6b63\u5219\u8868\u8fbe\u5f0f\uff0c\u683c\u5f0f\u4e3a\/regular expression\/<\/div>\n<div><\/div>\n<div>\u4f8b\u5982\uff1a\u663e\u793a\u4ee5r\u5f00\u5934\u7684\u884c<\/div>\n<div># awk -F: &#8216;\/^r\/{print $1}&#8217; \/etc\/passwd<\/div>\n<div>root<\/div>\n<div>rpc<\/div>\n<div>rpcuser<\/div>\n<div>2\u3001expresssion\uff1a\u8868\u8fbe\u5f0f\uff0c\u5176\u503c\u975e0\u6216\u4e3a\u975e\u7a7a\u5b57\u7b26\u65f6\u6ee1\u8db3\u6761\u4ef6\uff0c\u5982\uff1a$1 ~ \/foo\/ \u6216 $1 == &#8220;magedu&#8221;\uff0c\u7528\u8fd0\u7b97\u7b26~(\u5339\u914d)\u548c~!(\u4e0d\u5339\u914d)\u3002<\/div>\n<div><\/div>\n<div>\u4f8b\u9898\uff1a<\/div>\n<div>\u663e\u793aid\u53f7\u5c0f\u4e8e\u7b49\u4e8e2\u7684\u7528\u6237\u548cid\u53f7<\/div>\n<div># awk -F: &#8216;$3-1&lt;5{print $1,$3}&#8217; \/etc\/passwd<\/div>\n<div>root 0<\/div>\n<div>bin 1<\/div>\n<div>daemon 2<\/div>\n<div># awk -F: &#8216;$3&lt;=5{print $1,$3}&#8217; \/etc\/passwd<\/div>\n<div>root 0<\/div>\n<div>bin 1<\/div>\n<div>daemon 2<\/div>\n<div>\u53d6\u51fa\u9ed8\u8ba4shell\u4e3abash\u7684\u7528\u6237<\/div>\n<div># awk -F: &#8216;$7~&#8221;bash$&#8221;{print $1,$7}&#8217; \/etc\/passwd<\/div>\n<div>root \/bin\/bash<\/div>\n<div>student \/bin\/bash<\/div>\n<div>visitor \/bin\/bash<\/div>\n<div>myuseradd \/bin\/bash<\/div>\n<div>\u663e\u793a\u9ed8\u8ba4shell\u4e0d\u662fbash\u7684\u7528\u6237<\/div>\n<div># awk -F: &#8216;$7!~&#8221;bash&#8221;{print $1,$7}&#8217; \/etc\/passwd<\/div>\n<div>bin \/sbin\/nologin<\/div>\n<div>daemon \/sbin\/nologin<\/div>\n<div>adm \/sbin\/nologin<\/div>\n<div>lp \/sbin\/nologin<\/div>\n<div>3\u3001Ranges\uff1a \u6307\u5b9a\u7684\u5339\u914d\u8303\u56f4\uff0c\u683c\u5f0f\u4e3apat1,pat2<\/div>\n<div><\/div>\n<div>\u663e\u793aid\u53f7\u4e3a0\u6216\u8005shell\u4e3a\/sbin\/nologin\u7684\u7528\u6237<\/div>\n<div># awk -F: &#8216;$3==0,$7~&#8221;nologin&#8221;{print $1,$3,$7}&#8217; \/etc\/passwd<\/div>\n<div>root 0 \/bin\/bash<\/div>\n<div>bin 1 \/sbin\/nologin<\/div>\n<div>4\u3001BEGIN\/END\uff1a\u7279\u6b8a\u6a21\u5f0f\uff0c\u4ec5\u5728awk\u547d\u4ee4\u6267\u884c\u524d\u8fd0\u884c\u4e00\u6b21\u6216\u7ed3\u675f\u524d\u8fd0\u884c\u4e00\u6b21<\/div>\n<div><\/div>\n<div># awk -F: &#8216;$3==0,$7~&#8221;nologin&#8221;{printf &#8220;%-10s%-20s\\n&#8221;,$1,$7}&#8217; \/etc\/passwd<\/div>\n<div>root \u00a0 \u00a0 \u00a0\/bin\/bash<\/div>\n<div>bin \u00a0 \u00a0 \u00a0 \/sbin\/nologin<\/div>\n<div>\u53ef\u4ee5\u5728\u663e\u793a\u65f6\u663e\u793a\u8868\u5934<\/div>\n<div># awk -F: &#8216;BEGIN{print &#8220;Username shell&#8221;}{printf &#8220;%-10s%-20s\\n&#8221;,$1,$7}&#8217; \/etc\/passwd<\/div>\n<div>Username \u00a0 \u00a0 \u00a0shell<\/div>\n<div>root \u00a0 \u00a0 \u00a0\/bin\/bash<\/div>\n<div>bin \u00a0 \u00a0 \u00a0 \/sbin\/nologin<\/div>\n<div>daemon \u00a0 \u00a0\/sbin\/nologin<\/div>\n<div>adm \u00a0 \u00a0 \u00a0 \/sbin\/nologin<\/div>\n<div>\u663e\u793a\u8868\u5934\u548c\u8868\u5c3e<\/div>\n<div># \u00a0awk -F: &#8216;BEGIN{print &#8220;Username \u00a0shell&#8221;} {printf &#8220;%-10s%-20s\\n&#8221;,$1,$7}END<\/div>\n<div>{print &#8220;END OF report&#8221;}&#8217; \/etc\/passwd<\/div>\n<div>Username \u00a0 \u00a0 \u00a0shell<\/div>\n<div>root \u00a0 \u00a0 \u00a0\/bin\/bash<\/div>\n<div>bin \u00a0 \u00a0 \u00a0 \/sbin\/nologin<\/div>\n<div>daemon \u00a0 \u00a0\/sbin\/nologin<\/div>\n<div>adm \u00a0 \u00a0 \u00a0 \/sbin\/nologin<\/div>\n<div>END OF report<\/div>\n<div>5\u3001Empty(\u7a7a\u6a21\u5f0f)\uff1a\u5339\u914d\u4efb\u610f\u8f93\u5165\u884c\uff0c\u5bf9\u6587\u4ef6\u4e2d\u7684\u6bcf\u4e00\u884c\u505a\u5339\u914d<\/div>\n<div><\/div>\n<div># awk -F: \u00a0&#8216;{printf &#8220;%-10s%-20s\\n&#8221;,$1,$7}&#8217; \/etc\/passwd<\/div>\n<div>root \u00a0 \u00a0 \u00a0\/bin\/bash<\/div>\n<div>bin \u00a0 \u00a0 \u00a0 \/sbin\/nologin<\/div>\n<div>daemon \u00a0 \u00a0\/sbin\/nologin<\/div>\n<div>adm \u00a0 \u00a0 \u00a0 \/sbin\/nologin<\/div>\n<div>6.2 \u5e38\u89c1\u7684Action\uff08\u52a8\u4f5c\uff09<\/div>\n<div><\/div>\n<div>1\u3001Expressions:\u8868\u8fbe\u5f0f<\/div>\n<div>2\u3001Control statements\uff1a\u63a7\u5236\u8bed\u53e5\uff08if\u3001while&#8230;do\u3001for&#8230;.\u7b49\u5f85)<\/div>\n<div>3\u3001Compound statements:\u590d\u5408\u8bed\u53e5<\/div>\n<div>4\u3001Input statements\uff1a\u8f93\u5165\u8bed\u53e5<\/div>\n<div>5\u3001Output statements\uff1a\u8f93\u51fa\u8bed\u53e5<\/div>\n<div>\/\u6b63\u5219\u8868\u8fbe\u5f0f\/\uff1a\u4f7f\u7528\u901a\u914d\u7b26\u7684\u6269\u5c55\u96c6\u3002<\/div>\n<div><\/div>\n<div>\u5173\u7cfb\u8868\u8fbe\u5f0f\uff1a\u53ef\u4ee5\u7528\u4e0b\u9762\u8fd0\u7b97\u7b26\u8868\u4e2d\u7684\u5173\u7cfb\u8fd0\u7b97\u7b26\u8fdb\u884c\u64cd\u4f5c\uff0c\u53ef\u4ee5\u662f\u5b57\u7b26\u4e32\u6216\u6570\u5b57\u7684\u6bd4\u8f83\uff0c\u5982$2&gt;%1\u9009\u62e9\u7b2c\u4e8c\u4e2a<\/div>\n<div><\/div>\n<div>\u5b57\u6bb5\u6bd4\u7b2c\u4e00\u4e2a\u5b57\u6bb5\u957f\u7684\u884c\u3002<\/div>\n<div><\/div>\n<div>\u6a21\u5f0f\u5339\u914d\u8868\u8fbe\u5f0f\uff1a<\/div>\n<div><\/div>\n<div>\u6a21\u5f0f\uff0c\u6a21\u5f0f\uff1a\u6307\u5b9a\u4e00\u4e2a\u884c\u7684\u8303\u56f4\u3002\u8be5\u8bed\u6cd5\u4e0d\u80fd\u5305\u62ecBEGIN\u548cEND\u6a21\u5f0f\u3002<\/div>\n<div><\/div>\n<div>BEGIN\uff1a\u8ba9\u7528\u6237\u6307\u5b9a\u5728\u7b2c\u4e00\u6761\u8f93\u5165\u8bb0\u5f55\u88ab\u5904\u7406\u4e4b\u524d\u6240\u53d1\u751f\u7684\u52a8\u4f5c\uff0c\u901a\u5e38\u53ef\u5728\u8fd9\u91cc\u8bbe\u7f6e\u5168\u5c40\u53d8\u91cf\u3002<\/div>\n<div><\/div>\n<div>END\uff1a\u8ba9\u7528\u6237\u5728\u6700\u540e\u4e00\u6761\u8f93\u5165\u8bb0\u5f55\u88ab\u8bfb\u53d6\u4e4b\u540e\u53d1\u751f\u7684\u52a8\u4f5c\u3002<\/div>\n<div><\/div>\n<div>\u4e03\u3001\u63a7\u5236\u8bed\u53e5\uff1a<\/div>\n<div><\/div>\n<div>7.1 if-else<\/div>\n<div><\/div>\n<div>\u8bed\u6cd5\uff1aif (condition) {then-body} else {[ else-body ]}<\/div>\n<div><\/div>\n<div>\u5b9e\u4f8b\u5206\u6790\uff1a<\/div>\n<div><\/div>\n<div>\u82e5\u7528\u6237\u662froot\u5219\u663e\u793a\u201cadmin\u201d\u5426\u5219\u663e\u793a\u4e3a\u201cCommon user\u201d<\/div>\n<div># awk -F: &#8216;{if ($1==&#8221;root&#8221;) print $1,&#8221;admin&#8221;; else print $1, &#8220;Common user&#8221;}&#8217; \/etc\/passwd<\/div>\n<div>root admin<\/div>\n<div>bin Common user<\/div>\n<div>daemon Common user<\/div>\n<div>adm Common user<\/div>\n<div>lp Common user<\/div>\n<div>\u8fd9\u662f\u5bf9\u4e0a\u9762\u7684\u8bed\u6cd5\u683c\u5f0f\u5316\u4e86\uff0c\u770b\u8d77\u6765\u66f4\u7f8e\u89c2<\/div>\n<div># awk -F: &#8216;{if ($1==&#8221;root&#8221;) printf &#8220;%-15s: %s\\n&#8221;, $1,&#8221;Admin&#8221;; else printf &#8220;%-15s: %s\\n&#8221;, $1, &#8220;Common User&#8221;}&#8217; \/etc\/passwd<\/div>\n<div>root \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 : Admin<\/div>\n<div>bin \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0: Common User<\/div>\n<div>daemon \u00a0 \u00a0 \u00a0 \u00a0 : Common User<\/div>\n<div>adm \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0: Common User<\/div>\n<div>lp \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 : Common User<\/div>\n<div>\u7edf\u8ba1id\u53f7\u5927\u4e8e\u7b49\u4e8e500\u7684\u7528\u6237\u4e2a\u6570<\/div>\n<div># awk -F: -v sum=0 &#8216;{if ($3&gt;=500) sum++}END{print sum}&#8217; \/etc\/passwd<\/div>\n<div>21<\/div>\n<div>7.2 while<\/div>\n<div><\/div>\n<div>\u8bed\u6cd5\uff1a while (condition){statement1; statment2; &#8230;}<\/div>\n<div><\/div>\n<div>\u5b9e\u4f8b\u5206\u6790\uff1a<\/div>\n<div><\/div>\n<div>\u663e\u793a\u5b57\u7b26\u4e32\u5927\u4e8e\u7b49\u4e8e8\u7684\uff08\u6bcf\u4e00\u4e2a\u5b57\u7b26\u4e32\u90fd\u8981\u505a\u4e00\u4e0b\u5224\u65ad\uff09<\/div>\n<div># awk -F: &#8216;{i=1;while (i&lt;=NF) {if (length($i)&gt;=8) {print $i}; i++ }}&#8217; \/etc\/passwd<\/div>\n<div>\/bin\/bash<\/div>\n<div>\/sbin\/nologin<\/div>\n<div>\/sbin\/nologin<\/div>\n<div>\/var\/adm<\/div>\n<div>\/sbin\/nologin<\/div>\n<div>\/var\/spool\/lpd<\/div>\n<div>\u663e\u793a\u5b57\u7b26\u4e32\u5927\u4e8e\u7b49\u4e8e4\u7684<\/div>\n<div># awk -F: &#8216;{i=1;while (i&lt;=NF){if (length($i)&gt;=4) {print $i}; i++}}&#8217; \/etc\/passwd<\/div>\n<div>root<\/div>\n<div>root<\/div>\n<div>\/root<\/div>\n<div>\/bin\/bash<\/div>\n<div>\/bin<\/div>\n<div>\/sbin\/nologin<\/div>\n<div>daemon<\/div>\n<div>daemon<\/div>\n<div>7.3 do-while<\/div>\n<div><\/div>\n<div>\u8bed\u6cd5\uff1a do {statement1, statement2, &#8230;} while (condition)<\/div>\n<div><\/div>\n<div>\u663e\u793a\u5b57\u7b26\u4e32\u5c0f\u4e8e\u7b49\u4e8e4\u7684\uff08\u6ce8\u610f\u4f7f\u7528do\u8bed\u53e5\u65f6\uff0c\u5148\u6267\u884c\u7684\u662f\u6761\u4ef6\uff09<\/div>\n<div># awk -F: &#8216;{i=1;do {print $i;i++}while(i&lt;=3)}&#8217; \/etc\/passwd<\/div>\n<div>root<\/div>\n<div>x<\/div>\n<div>0<\/div>\n<div>bin<\/div>\n<div>7.4 for<\/div>\n<div><\/div>\n<div>\u8bed\u6cd5\uff1a for ( variable assignment; condition; iteration process) { statement1, statement2, &#8230;}<\/div>\n<div><\/div>\n<div>\u4f8b\u9898\uff1a<\/div>\n<div><\/div>\n<div>1\u3001\u663e\u793a\u5b57\u7b26\u4e32\u5927\u4e8e\u7b49\u4e8e4\u7684<\/div>\n<div># awk -F: &#8216;{for(i=1;i&lt;=NF;i++) {if (length($i)&gt;=4) {print $i}}}&#8217; \/etc\/passwd<\/div>\n<div>root<\/div>\n<div>root<\/div>\n<div>\/root<\/div>\n<div>\/bin\/bash<\/div>\n<div>2\u3001\u663e\u793a\u5b57\u7b26\u4e32\u5c0f\u4e8e\u7b49\u4e8e4\u7684<\/div>\n<div># awk -F: &#8216;{for(i=1;i&lt;=3;i++) print $i}&#8217; \/etc\/passwd<\/div>\n<div>root<\/div>\n<div>x<\/div>\n<div>0<\/div>\n<div>bin<\/div>\n<div>for\u5faa\u73af\u8fd8\u53ef\u4ee5\u7528\u6765\u904d\u5386\u6570\u7ec4\u5143\u7d20\uff1a<\/div>\n<div>\u8bed\u6cd5\uff1a for (i in array) {statement1, statement2<\/div>\n<div>\u4f8b\u5982\uff1a\u663e\u793a<\/div>\n<div># awk -F: &#8216;$NF!~\/^$\/{BASH[$NF]++}END{for(A in BASH){printf &#8220;%-15s:%i\\n&#8221;,A,BASH[A]}}&#8217;\/etc\/passwd<\/div>\n<div>\/bin\/sync \u00a0 \u00a0 \u00a0:1<\/div>\n<div>\/bin\/bash \u00a0 \u00a0 \u00a0:20<\/div>\n<div>\/sbin\/nologin \u00a0:31<\/div>\n<div>\/sbin\/halt \u00a0 \u00a0 :1<\/div>\n<div>\/etc\/tcsh \u00a0 \u00a0 \u00a0:1<\/div>\n<div>\/sbin\/shutdown :1<\/div>\n<div>7.5 case<\/div>\n<div><\/div>\n<div>\u8bed\u6cd5\uff1aswitch (expression) { case VALUE or \/REGEXP\/: statement1, statement2,&#8230; default:<\/div>\n<div><\/div>\n<div>statement1, &#8230;}<\/div>\n<div><\/div>\n<div>7.6 break \u548c continue<\/div>\n<div><\/div>\n<div>\u5e38\u7528\u4e8e\u5faa\u73af\u6216case\u8bed\u53e5\u4e2d<\/div>\n<div><\/div>\n<div>7.7 next<\/div>\n<div><\/div>\n<div>\u63d0\u524d\u7ed3\u675f\u5bf9\u672c\u884c\u6587\u672c\u7684\u5904\u7406\uff0c\u5e76\u63a5\u7740\u5904\u7406\u4e0b\u4e00\u884c\uff1b\u4f8b\u5982\uff0c\u4e0b\u9762\u7684\u547d\u4ee4\u5c06\u663e\u793a\u5176ID\u53f7\u4e3a\u5947\u6570\u7684\u7528\u6237\uff1a<\/div>\n<div><\/div>\n<div># awk -F: &#8216;{if($3%2==0) next;print $1,$3}&#8217; \/etc\/passwd<\/div>\n<div>bin 1<\/div>\n<div>adm 3<\/div>\n<div>sync 5<\/div>\n<div>halt 7<\/div>\n<div>news 9<\/div>\n<div>operator 11<\/div>\n<div>\u516b\u3001awk\u4e2d\u4f7f\u7528\u6570\u7ec4<\/div>\n<div><\/div>\n<div>8.1 \u6570\u7ec4<\/div>\n<div><\/div>\n<div>array[index-expression]<\/div>\n<div><\/div>\n<div>index-expression\u53ef\u4ee5\u4f7f\u7528\u4efb\u610f\u5b57\u7b26\u4e32\uff1b\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u5982\u679c\u67d0\u6570\u636e\u7ec4\u5143\u7d20\u4e8b\u5148\u4e0d\u5b58\u5728\uff0c\u90a3\u4e48\u5728\u5f15\u7528\u5176\u65f6\uff0cawk\u4f1a\u81ea\u52a8\u521b\u5efa\u6b64\u5143\u7d20\u5e76\u521d\u59cb\u5316\u4e3a\u7a7a\u4e32\uff1b\u56e0\u6b64\uff0c\u8981\u5224\u65ad\u67d0\u6570\u636e\u7ec4\u4e2d\u662f\u5426\u5b58\u5728\u67d0\u5143\u7d20\uff0c\u9700\u8981\u4f7f\u7528index in array\u7684\u65b9\u5f0f\u3002\u8981\u904d\u5386\u6570\u7ec4\u4e2d\u7684\u6bcf\u4e00\u4e2a\u5143\u7d20\uff0c\u9700\u8981\u4f7f\u7528\u5982\u4e0b\u7684\u7279\u6b8a\u7ed3\u6784\uff1a<\/div>\n<div><\/div>\n<div>for (var in array) { statement1, &#8230; }<\/div>\n<div><\/div>\n<div>\u663e\u793a\u5404\u4e2ashell\u7684\u4e2a\u6570\u548c<\/div>\n<div># awk -F: &#8216;{shell[$NF]++}END{for(A in shell) {print A,shell[A]}}&#8217; \/etc\/passwd<\/div>\n<div>\u00a01<\/div>\n<div>\/bin\/sync 1<\/div>\n<div>\/bin\/bash 20<\/div>\n<div>\/sbin\/nologin 31<\/div>\n<div>\/sbin\/halt 1<\/div>\n<div>\/etc\/tcsh 1<\/div>\n<div>\/sbin\/shutdown 1<\/div>\n<div>\u5176\u4e2d\uff0cvar\u7528\u4e8e\u5f15\u7528\u6570\u7ec4\u4e0b\u6807\uff0c\u800c\u4e0d\u662f\u5143\u7d20\u503c\uff1b<\/div>\n<div>\u7edf\u8ba1tcp\u8fde\u63a5\u72b6\u6001\u7684\u4e2a\u6570\uff08$6\u4e5f\u662f\u6700\u540e\u4e00\u4e2a\u5b57\u6bb5\uff0c\u53ef\u4ee5\u4f7f\u7528$NF)<\/div>\n<div># netstat -ant | awk &#8216;\/^tcp\/ {STATE[$NF]++} END {for(a in STATE) print a, STATE[a]}&#8217;<\/div>\n<div>LISTEN 11<\/div>\n<div>ESTABLISHED 2<\/div>\n<div>\u6bcf\u51fa\u73b0\u4e00\u6b21\u88ab\/^tcp\/\u6a21\u5f0f\u5339\u914d\u5230\u7684\u884c\uff0c\u6570\u7ec4S[$NF]\u5c31\u52a01\uff0cNF\u4e3a\u5f53\u524d\u5339\u914d\u5230\u7684\u884c\u7684<\/div>\n<div>\u6700\u540e\u4e00\u4e2a\u5b57\u6bb5\uff0c\u6b64\u5904\u7528\u5176\u503c\u505a\u4e3a\u6570\u7ec4S\u7684\u5143\u7d20\u7d22\u5f15\uff1b<\/div>\n<div>\u7edf\u8ba1\u8bbf\u95ee\u672c\u5730\u7684IP\u53ca\u4e2a\u6570<\/div>\n<div># awk &#8216;{count[$1]++}END{for(ip in count) {printf &#8220;%-20s:%d\\n&#8221;,ip,count[ip]}}&#8217;<\/div>\n<div>\/var\/log\/httpd\/access_log<\/div>\n<div>192.168.10.1 \u00a0 \u00a0 \u00a0\uff1a1<\/div>\n<div>172.16.50.5 \u00a0 \u00a0 \u00a0 \uff1a10<\/div>\n<div>\u7528\u6cd5\u4e0e\u4e0a\u4e00\u4e2a\u4f8b\u5b50\u76f8\u540c\uff0c\u7528\u4e8e\u7edf\u8ba1\u67d0\u65e5\u5fd7\u6587\u4ef6\u4e2dIP\u5730\u7684\u8bbf\u95ee\u91cf<\/div>\n<div>8.2 \u5220\u9664\u6570\u7ec4\u53d8\u91cf<\/div>\n<div><\/div>\n<div>\u4ece\u5173\u7cfb\u6570\u7ec4\u4e2d\u5220\u9664\u6570\u7ec4\u7d22\u5f15\u9700\u8981\u4f7f\u7528delete\u547d\u4ee4\u3002\u4f7f\u7528\u683c\u5f0f\u4e3a\uff1a<\/div>\n<div><\/div>\n<div>delete \u00a0array[index]<\/div>\n<div><\/div>\n<div>\u4e5d\u3001awk\u7684\u5185\u7f6e\u51fd\u6570<\/div>\n<div><\/div>\n<div>split(string, array [, fieldsep [, seps ] ])<\/div>\n<div><\/div>\n<div>\u529f\u80fd\uff1a\u5c06string\u8868\u793a\u7684\u5b57\u7b26\u4e32\u4ee5fieldsep\u4e3a\u5206\u9694\u7b26\u8fdb\u884c\u5206\u9694\uff0c\u5e76\u5c06\u5206\u9694\u540e\u7684\u7ed3\u679c\u4fdd\u5b58\u81f3array\u4e3a\u540d\u7684\u6570\u7ec4\u4e2d\uff1b\u6570\u7ec4\u4e0b\u6807\u4e3a\u4ece0\u5f00\u59cb\u7684\u5e8f\u5217\uff1b<\/div>\n<div><\/div>\n<div># netstat -ant | awk &#8216;\/:80\\&gt;\/{split($5,clients,&#8221;:&#8221;);IP[clients[1]]++}END{for(i in IP){print IP[i],i}}&#8217; | sort -rn | head -50<\/div>\n<div><\/div>\n<div>length([string])<\/div>\n<div><\/div>\n<div>\u529f\u80fd\uff1a\u8fd4\u56destring\u5b57\u7b26\u4e32\u4e2d\u5b57\u7b26\u7684\u4e2a\u6570\uff1b<\/div>\n<div><\/div>\n<div>substr(string, start [, length])<\/div>\n<div><\/div>\n<div>\u529f\u80fd\uff1a\u53d6string\u5b57\u7b26\u4e32\u4e2d\u7684\u5b50\u4e32\uff0c\u4ecestart\u5f00\u59cb\uff0c\u53d6length\u4e2a\uff1bstart\u4ece1\u5f00\u59cb\u8ba1\u6570\uff1b<\/div>\n<div><\/div>\n<div>system(command)<\/div>\n<div><\/div>\n<div>\u529f\u80fd\uff1a\u6267\u884c\u7cfb\u7edfcommand\u5e76\u5c06\u7ed3\u679c\u8fd4\u56de\u81f3awk\u547d\u4ee4<\/div>\n<div><\/div>\n<div>systime()<\/div>\n<div><\/div>\n<div>\u529f\u80fd\uff1a\u53d6\u7cfb\u7edf\u5f53\u524d\u65f6\u95f4<\/div>\n<div><\/div>\n<div>tolower(s)<\/div>\n<div><\/div>\n<div>\u529f\u80fd\uff1a\u5c06s\u4e2d\u7684\u6240\u6709\u5b57\u6bcd\u8f6c\u4e3a\u5c0f\u5199<\/div>\n<div><\/div>\n<div>toupper(s)<\/div>\n<div><\/div>\n<div>\u529f\u80fd\uff1a\u5c06s\u4e2d\u7684\u6240\u6709\u5b57\u6bcd\u8f6c\u4e3a\u5927\u5199<\/div>\n<div><\/div>\n<div>\u5341\u3001\u7528\u6237\u81ea\u5b9a\u4e49\u51fd\u6570<\/div>\n<div><\/div>\n<div>\u81ea\u5b9a\u4e49\u51fd\u6570\u4f7f\u7528function\u5173\u952e\u5b57\u3002\u683c\u5f0f\u5982\u4e0b\uff1a<\/div>\n<div><\/div>\n<div>function F_NAME([variable])<\/div>\n<div><\/div>\n<div>{<\/div>\n<div><\/div>\n<div>statements<\/div>\n<div><\/div>\n<div>}<\/div>\n<div><\/div>\n<div>\u51fd\u6570\u8fd8\u53ef\u4ee5\u4f7f\u7528return\u8bed\u53e5\u8fd4\u56de\u503c\uff0c\u683c\u5f0f\u4e3a\u201creturn value\u201d\u3002<\/div>\n","protected":false},"excerpt":{"rendered":"<p>awk: \u4e2d\u6587\u610f\u601d\u662f\u62a5\u544a\u751f\u6210\u5668 \u80fd\u591f\u6839\u636e\u6211\u4eec\u8f93\u5165\u7684\u4fe1\u606f\uff0c\u5c06\u4fe1\u606f\u683c\u5f0f\u5316\u4ee5\u540e\u663e\u793a\uff0c\u5c06\u5b9a\u4e49\u597d\u7684\u4fe1\u606f\u4ee5\u6bd4\u8f83\u7f8e\u89c2\uff08\u76f4\u89c2\uff09 &#8230; <a title=\"awk\u7528\u6cd5\u8be6\u89e3\" class=\"read-more\" href=\"https:\/\/cn.hostease.com\/xueyuan\/jishu\/linux\/awk%e7%94%a8%e6%b3%95%e8%af%a6%e8%a7%a3\/\" aria-label=\"\u9605\u8bfb awk\u7528\u6cd5\u8be6\u89e3\">\u9605\u8bfb\u66f4\u591a<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[49],"tags":[1554,1555,1556],"class_list":["post-1734","post","type-post","status-publish","format-standard","hentry","category-linux","tag-awk"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/posts\/1734","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/comments?post=1734"}],"version-history":[{"count":1,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/posts\/1734\/revisions"}],"predecessor-version":[{"id":1735,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/posts\/1734\/revisions\/1735"}],"wp:attachment":[{"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/media?parent=1734"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/categories?post=1734"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/tags?post=1734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}