awk命令详解是什么?
awk命令是linux下的一个文件管理命令,具体语法格式为awk [参数] [文件],通常是用于文本和数据进行处理的编程语言,awk命令主要有两个功能;awk命令可以在linux/unix下对文本和数据进行处理;awk命令支持用户自定义函数和动态正则表达式。
相关介绍:
AWK是一种优良的文本处理工具。它不仅是Linux中也是任何环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言(其名称得自于它的创始人AlfredAho、PeterWeinberger和BrianKernighan姓氏的首个字母)的最大功能取决于一个人所拥有的知识。
AWK提供了极其强大的功能:可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。
实际上AWK的确拥有自己的语言:AWK程序设计语言,三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
最简单地说,AWK是一种用于处理文本的编程语言工具。AWK在很多方面类似于shell编程语言,尽管AWK具有完全属于其本身的语法。它的设计思想来源于SNOBOL4、sed、MarcRochkind设计的有效性语言、语言工具yacc和lex,当然还从C语言中获取了一些优秀的思想。
在最初创造AWK时,其目的是用于文本处理,并且这种语言的基础是,只要在输入数据中有模式匹配,就执行一系列指令。
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在对数据分析并生成报告时,显得尤为强大。
简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk有三个不同的版本:awk、nawk和gawk,未作特别说明,一般指gawk,gawk是awk的GNU版本。
之所以叫awk是因为其取了三位创始人Alfred Aho,Peter Weinberger,和Brian Kernighan的Family
Name的首字符。
awk格式:
格式: sed -n '3p' sed.txt
找谁干啥(条件动作)
awk格式
#取出/etc/passwd 第1行的第1列和第3列
awk -F: 'NR==1{print $1,$3}' /etc/passwd
awk 选项 '条件{动作}' /etc/passwd
条件: 哪一行,过滤什么内容
动作: print输出与显示 ,计算....
awk取行:与sed类似
案例01:取出sed.txt的第2行
[root@oldboy81-golden-lnb /oldboy]# cat sed.txt
101,oldgirl,CEO
102,zhangya,CTO
103,lidao007,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@oldboy81-golden-lnb /oldboy]# awk 'NR==2' sed.txt
102,zhangya,CTO
#awk '行号 等于 2' sed.txt
#NR awk内置变量
Number of Record 记录号(行号)
案例02:取出sed.txt中包含oldboy或lidao的行
[root@oldboy81-golden-lnb /oldboy]# sed -rn '/oldboy|lidao/p' sed.txt
103,lidao007,COO
110,lidao,COCO
[root@oldboy81-golden-lnb /oldboy]# awk '/oldboy|lidao/' sed.txt
103,lidao007,COO
110,lidao,COCO
案例03:取出文件第2行到第5行内容
#awk '行号大于等于2 并且 行号小于等于5' sed.txt
#方法01
awk 'NR>=2 && NR<=5' sed.txt #必会
&& 表示并且.
#方法02
sed -n '2,5p' sed.txt
#方法03 了解
awk 'NR==2,NR==5' sed.txt #从行号是2的行开始 到 行号是5的行结束( 了解)
案例04:取出文件第3行到最后一行内容
[root@oldboy81-golden-lnb /oldboy]# awk 'NR >= 3' sed.txt
103,lidao007,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@oldboy81-golden-lnb /oldboy]# sed -n '3,$p' sed.txt
103,lidao007,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
案例05:取出从包含oldboy的行到lidao的行
[root@oldboy81-golden-lnb /oldboy]# cat sed.txt
101,oldgirl,CEO
102,zhangya,CTO
103,lidao007,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
root@oldboy81-golden-lnb /oldboy]# sed -n '/old/,/lidao/p' sed.txt
101,oldgirl,CEO
102,zhangya,CTO
103,lidao007,COO
[root@oldboy81-golden-lnb /oldboy]# awk '/old/ , /lidao/' sed.txt
101,oldgirl,CEO
102,zhangya,CTO
103,lidao007,COO
绛旓細awk鍛戒护鏄痩inux涓嬬殑涓涓枃浠剁鐞嗗懡浠わ紝閫氬父鏄敤浜庢枃鏈拰鏁版嵁杩涜澶勭悊鐨勭紪绋嬭瑷锛宎wk鍛戒护涓昏鏈変袱涓姛鑳斤紝鍏蜂綋浠嬬粛濡備笅锛1銆乤wk鍛戒护鍙互鍦╨inux/unix涓嬪鏂囨湰鍜屾暟鎹繘琛屽鐞嗭紱2銆乤wk鍛戒护鏀寔鐢ㄦ埛鑷畾涔夊嚱鏁板拰鍔ㄦ佹鍒欒〃杈惧紡銆傚弬鑰冭寖渚嬶細姣斿鎵撳嵃姣忎竴琛岀殑绗簩鍜岀涓変釜瀛楁锛屽叿浣撳懡浠や负锛歔root@linuxcool ~]#...
绛旓細Awk鍛戒护璇﹁В Awk鏄竴绉嶅己澶х殑鏂囨湰澶勭悊宸ュ叿锛屽箍娉涘簲鐢ㄤ簬Unix/Linux绯荤粺涓銆傚畠浠ヨ涓哄崟浣嶈鍙栨枃鏈枃浠讹紝鏍规嵁鐢ㄦ埛鎸囧畾鐨勮鍒欒繘琛屾ā寮忔壂鎻忓拰澶勭悊銆侫wk鐨勫懡浠ゅ拰璇硶鍗佸垎涓板瘜锛屼笅闈㈡槸鍏充簬Awk鍛戒护鐨勮瑙c備竴銆丄wk鐨勫熀鏈粨鏋 Awk鍛戒护鐨勫熀鏈粨鏋勪负锛歜ash awk 'pattern { action }' filename 鍏朵腑锛宲attern鏄垜浠鍖...
绛旓細awk鍛戒护鏄痩inux涓嬬殑涓涓枃浠剁鐞嗗懡浠锛屽叿浣撹娉曟牸寮忎负awk [鍙傛暟] [鏂囦欢]锛岄氬父鏄敤浜庢枃鏈拰鏁版嵁杩涜澶勭悊鐨勭紪绋嬭瑷锛宎wk鍛戒护涓昏鏈変袱涓姛鑳斤紱awk鍛戒护鍙互鍦╨inux/unix涓嬪鏂囨湰鍜屾暟鎹繘琛屽鐞嗭紱awk鍛戒护鏀寔鐢ㄦ埛鑷畾涔夊嚱鏁板拰鍔ㄦ佹鍒欒〃杈惧紡銆傜浉鍏充粙缁嶏細AWK鏄竴绉嶄紭鑹殑鏂囨湰澶勭悊宸ュ叿銆傚畠涓嶄粎鏄疞inux涓篃鏄换浣曠幆...
绛旓細awk鍛戒护璇﹁В锛歛wk鏄竴涓己澶х殑鏂囨湰鍒嗘瀽宸ュ叿锛岀浉瀵逛簬grep鐨勬煡鎵撅紝sed鐨勭紪杈戯紝awk鍦ㄥ叾瀵规暟鎹垎鏋愬苟鐢熸垚鎶ュ憡鏃讹紝鏄惧緱灏や负寮哄ぇ銆傜畝鍗曟潵璇碼wk灏辨槸鎶婃枃浠堕愯鐨勮鍏ワ紝浠ョ┖鏍间负榛樿鍒嗛殧绗﹀皢姣忚鍒囩墖锛屽垏寮鐨勯儴鍒嗗啀杩涜鍚勭鍒嗘瀽澶勭悊銆俛wk鏈3涓笉鍚岀増鏈細awk銆乶awk鍜実awk锛屾湭浣滅壒鍒鏄庯紝涓鑸寚gawk锛実awk鏄疉WK鐨凣...
绛旓細awk鍛戒护鏄竴绉嶅己澶х殑鏂囨湰澶勭悊宸ュ叿锛屽挨鍏堕傚悎澶勭悊灏忓瀷鏁版嵁銆傚畠鐨勫熀鏈繍琛屾ā寮忔槸閫氳繃涓绯诲垪鏉′欢鍜屽姩浣滄潵鎿嶄綔涓琛屼腑鐨勫瓧娈碉紝鏍煎紡涓'鏉′欢绫诲瀷1{鍔ㄤ綔1} 鏉′欢绫诲瀷2{鍔ㄤ綔2}...'锛屽苟搴旂敤浜庢寚瀹氱殑鏂囦欢銆備緥濡傦紝浣跨敤"last | awk '{print $1 "\t" $3}'"鍙互鏌ョ湅鐧诲綍鑰呬俊鎭紝浠呮樉绀虹櫥褰曞悕鍜孖P鍦板潃锛屼互鍒惰〃...
绛旓細awk 鐨勫唴缃彉閲忋傚彉閲忓悕绉 浠h〃鐨勫惈涔 NF 姣忎竴琛岋紙$0锛夋嫢鏈夌殑瀛楁鎬绘暟 NR 褰撳墠 awk 鎵澶勭悊鐨勬槸 鈥滅鍑犺鈥 鏁版嵁 FS 褰撳墠鍒嗛殧绗︼紝榛樿绌烘牸閿 awk 鐨勯昏緫杩愮畻绗 鐗圭偣 AWK鏄涓绉嶄紭鑹殑鏂囨湰澶勭悊宸ュ叿銆傚畠涓嶄粎鏄 Linux 涓篃鏄换浣曠幆澧冧腑鐜版湁鐨勫姛鑳芥渶寮哄ぇ鐨勬暟鎹鐞嗗紩鎿庝箣涓銆傝繖绉嶇紪绋嬪強鏁版嵁鎿嶄綔璇█锛堝叾...
绛旓細鍜宻ed鍛戒护绫讳技锛awk鍛戒护涔熸槸閫愯鎵弿鏂囦欢锛堜粠绗1琛屽埌鏈鍚庝竴琛岋級锛屽鎵惧惈鏈夌洰鏍囨枃鏈殑琛岋紝濡傛灉鍖归厤鎴愬姛锛屽垯浼氬湪璇ヨ涓婃墽琛岀敤鎴锋兂瑕佺殑鎿嶄綔锛涘弽涔嬶紝鍒欎笉瀵硅鍋氫换浣曞鐞嗐俛wk鍛戒护鐨勫熀鏈牸寮廩root@localhost]#awk[閫夐」]'鑴氭湰鍛戒护'鏂囦欢鍚嶃俛wk鐨勫己澶т箣澶勫湪浜庤剼鏈懡浠わ紝瀹冪敱2閮ㄥ垎缁勬垚锛屽垎鍒负鍖归厤瑙勫垯鍜屾墽琛屽懡浠...
绛旓細pattern灏辨槸瑕佽〃绀虹殑姝e垯琛ㄨ揪寮忥紝鐢ㄦ枩鏉犳嫭璧锋潵銆俛wk璇█鐨勬渶鍩烘湰鍔熻兘鏄湪鏂囦欢鎴栬呭瓧绗︿覆涓熀浜庢寚瀹氳鍒欐祻瑙堝拰鎶藉彇淇℃伅锛宎wk鎶藉彇淇℃伅鍚庯紝鎵嶈兘杩涜鍏朵粬鏂囨湰鎿嶄綔銆傚畬鏁寸殑awk鑴氭湰閫氬父鐢ㄦ潵鏍煎紡鍖栨枃鏈枃浠朵腑鐨勪俊鎭awk鏄浠ユ枃浠剁殑涓琛屼负澶勭悊鍗曚綅鐨勩俛wk姣忔帴鏀舵枃浠剁殑涓琛岋紝鐒跺悗鎵ц鐩稿簲鐨鍛戒护锛屾潵澶勭悊鏂囨湰銆
绛旓細绠鍗曟潵璇碼wk灏辨槸鎶婃枃浠堕愯鐨勮鍏ワ紝浠ョ┖鏍间负榛樿鍒嗛殧绗﹀皢姣忚鍒囩墖锛屽垏寮鐨勯儴鍒嗗啀杩涜鍚勭鍒嗘瀽澶勭悊銆awk鏄竴涓己澶х殑鏂囨湰鍒嗘瀽宸ュ叿锛岀浉瀵逛簬grep鐨勬煡鎵撅紝sed鐨勭紪杈戯紝awk鍦ㄥ叾瀵规暟鎹垎鏋愬苟鐢熸垚鎶ュ憡鏃讹紝鏄惧緱灏や负寮哄ぇ銆傝繍绠椾笌鍒ゆ柇锛氫綔涓轰竴绉嶇▼搴忚璁¤瑷鎵搴斿叿鏈夌殑鐗圭偣涔嬩竴锛宎wk鏀寔澶氱杩愮畻锛岃繖浜涜繍绠椾笌C璇█鎻愪緵...
绛旓細awk锛屼竴涓己澶х殑鏂囨湰澶勭悊宸ュ叿锛岄氳繃鍛戒护琛屽鏂囦欢鍐呭杩涜鎿嶄綔銆傚垵娆′娇鐢ㄦ椂锛屽彲鑳戒細鎰熷埌鍥版儜锛屼絾瀹為檯涓婏紝瀹冪畝鍗曚絾鍔熻兘寮哄ぇ銆awk鍛戒护鐨勫熀鏈粨鏋勫寘鎷彲閫夊弬鏁般佸繀闇鐨勫彲鎵ц鑴氭湰浠g爜浠ュ強澶勭悊鐨勬枃浠躲傝剼鏈唬鐮佺敱鍗曞紩鍙锋嫭璧凤紝鍐呭祵鑺辨嫭鍙疯〃绀哄彲鎵ц浠g爜娈碉紝姣忎釜浠g爜娈电敱鍒嗗彿鍒嗛殧銆備互 /etc/passwd 鏂囦欢涓轰緥锛宎wk浼...