awk命令详解
除了使用sed命令,Linux系统中还有一个功能更加强大的文本数据处理工具,就是awk。它诞生于20世纪70年代末期,这也许是它影响了众多Linux用户的原因之一。和sed命令类似,awk命令也是逐行扫描文件(从第1行到最后一行),寻找含有目标文本的行,如果匹配成功,则会在该行上执行用户想要的操作;反之,则不对行做任何处理。awk命令的基本格式[root@localhost]#awk[选项]'脚本命令'文件名。awk的强大之处在于脚本命令,它由2部分组成,分别为匹配规则和执行命令。awk的主要特性之一是其处理文本文件中数据的能力
它会自动给一行中的每个数据元素分配一个变量。
绛旓細pattern灏辨槸瑕佽〃绀虹殑姝e垯琛ㄨ揪寮忥紝鐢ㄦ枩鏉犳嫭璧锋潵銆awk璇█鐨勬渶鍩烘湰鍔熻兘鏄湪鏂囦欢鎴栬呭瓧绗︿覆涓熀浜庢寚瀹氳鍒欐祻瑙堝拰鎶藉彇淇℃伅锛宎wk鎶藉彇淇℃伅鍚庯紝鎵嶈兘杩涜鍏朵粬鏂囨湰鎿嶄綔銆傚畬鏁寸殑awk鑴氭湰閫氬父鐢ㄦ潵鏍煎紡鍖栨枃鏈枃浠朵腑鐨勪俊鎭俛wk鏄互鏂囦欢鐨勪竴琛屼负澶勭悊鍗曚綅鐨勩俛wk姣忔帴鏀舵枃浠剁殑涓琛岋紝鐒跺悗鎵ц鐩稿簲鐨鍛戒护锛屾潵澶勭悊鏂囨湰銆
绛旓細awk锛氱敤浜庝竴琛屼腑鍒嗘垚鏁颁釜鈥滃瓧娈碘濇潵澶勭悊銆傞傚悎澶勭悊 灏忓瀷鏁版嵁銆傝繍琛屾ā寮忥細awk '鏉′欢绫诲瀷1{鍔ㄤ綔1} 鏉′欢绫诲瀷2{鍔ㄤ綔2} ...' filename銆俵ast | awk '{print $1 "\t" $3}' <== 鏌ョ湅鐧诲綍鑰呯殑鏁版嵁锛屽彧鏄剧ず鐧诲綍鍚嶅拰ip鍦板潃锛屽苟浠tab]闅斿紑 awk 鐨勫唴缃彉閲忋傚彉閲忓悕绉 浠h〃鐨勫惈涔 NF 姣忎竴琛岋紙$0锛...
绛旓細linux涓awk鍛戒护璇﹁В锛烝WK鏄竴绉嶅鐞嗘枃鏈枃浠剁殑璇█锛屾槸涓涓己澶х殑鏂囨湰鍒嗘瀽宸ュ叿銆備箣鎵浠ュ彨AWK鏄洜涓哄叾鍙栦簡涓変綅鍒涘浜篈lfredAho锛孭eterWeinberger,鍜孊rianKernighan鐨凢amilyName鐨勯瀛楃銆傝娉 awk'script'var=valuefile(s)鎴 awk-fscriptfilevar=valuefile(s)閫夐」鍙傛暟璇存槑锛-Ffsor--field-separatorfs 鎸囧畾...
绛旓細awk鍛戒护鏄痩inux涓嬬殑涓涓枃浠剁鐞嗗懡浠わ紝鍏蜂綋璇硶鏍煎紡涓篴wk [鍙傛暟] [鏂囦欢]锛岄氬父鏄敤浜庢枃鏈拰鏁版嵁杩涜澶勭悊鐨勭紪绋嬭瑷锛宎wk鍛戒护涓昏鏈変袱涓姛鑳斤紱awk鍛戒护鍙互鍦╨inux/unix涓嬪鏂囨湰鍜屾暟鎹繘琛屽鐞嗭紱awk鍛戒护鏀寔鐢ㄦ埛鑷畾涔夊嚱鏁板拰鍔ㄦ佹鍒欒〃杈惧紡銆傜浉鍏充粙缁嶏細AWK鏄竴绉嶄紭鑹殑鏂囨湰澶勭悊宸ュ叿銆傚畠涓嶄粎鏄疞inux涓篃鏄换浣...
绛旓細绠鍗曟潵璇awk灏辨槸鎶婃枃浠堕愯鐨勮鍏ワ紝浠ョ┖鏍间负榛樿鍒嗛殧绗﹀皢姣忚鍒囩墖锛屽垏寮鐨勯儴鍒嗗啀杩涜鍚勭鍒嗘瀽澶勭悊銆俛wk鏄竴涓己澶х殑鏂囨湰鍒嗘瀽宸ュ叿锛岀浉瀵逛簬grep鐨勬煡鎵撅紝sed鐨勭紪杈戯紝awk鍦ㄥ叾瀵规暟鎹垎鏋愬苟鐢熸垚鎶ュ憡鏃讹紝鏄惧緱灏や负寮哄ぇ銆傝繍绠椾笌鍒ゆ柇锛氫綔涓轰竴绉嶇▼搴忚璁¤瑷鎵搴斿叿鏈夌殑鐗圭偣涔嬩竴锛宎wk鏀寔澶氱杩愮畻锛岃繖浜涜繍绠椾笌C璇█鎻愪緵...
绛旓細Awk锛屼竴涓己澶х殑鏂囨湰澶勭悊宸ュ叿锛屽叾鎿嶄綔鏂瑰紡鏄愭潯澶勭悊杈撳叆鏁版嵁锛岀洿鍒版枃浠剁粨鏉燂紝姣忔潯璁板綍鐢遍粯璁ょ殑鎹㈣绗﹀垎闅斻傝褰曚腑鐨勫瓧娈甸氳繃瀛楁鍙凤紙浠$1寮濮嬶級寮曠敤锛屾渶鍚庝竴涓瓧娈电敤$NF琛ㄧず锛屾暣涓褰曞垯鐢$0琛ㄧず銆侫wk鏀寔澶氱妯″紡锛屽寘鎷鍒欒〃杈惧紡銆佸叧绯昏〃杈惧紡銆佽寖鍥村拰鐗规畩琛ㄨ揪寮忋備緥濡傦紝浣犲彲浠ヤ娇鐢ㄦ鍒欒〃杈惧紡妯″紡濡傗/0.5...
绛旓細awk鍛戒护鏄疉lfred Aho, Peter Weinberger, Brian Kernighan涓変綅浣滆呰仈鍚堝紑鍙戠殑锛岀敤浜嶭inux/Unix涓鐞嗘暟鎹拰浜х敓鎶ュ憡銆俛wk鍛戒护鍔熻兘鍗佸垎寮哄ぇ锛屽彲鏍规嵁闇瑕佹姄鍙栥佹埅鍙栨寚瀹氱殑鍒楁垨琛屻傞鍏堝湪/mnt鐩綍涓嬪垱寤虹ず渚嬫枃鏈枃浠秄1锛屽叾鍐呭濡備笅锛1 hello hello 2 data data 3 xyz abc 4 123 789 5 ftp 6 Apache 7 ...
绛旓細awk鏄竴涓己澶х殑鏂囨湰鍒嗘瀽宸ュ叿锛屼笌grep銆乻ed鐩告瘮锛宎wk鍦ㄥ鏁版嵁鍒嗘瀽骞剁敓鎴愭姤鍛婃椂锛屾樉寰楁湁寰堝ぇ鐨勪紭鍔裤俛wk鏈変笁涓笉鍚岀殑鐗堟湰锛歛wk銆乶awk鍜実awk锛屽湪娌℃湁鍋氱壒娈婅鏃剁殑鏃跺欓粯璁ょ殑灏辨槸gawk锛実awk鏄痑wk鐨凣NU鐗堟湰銆傚叾涓璫ommand鏄湡姝g殑awk鍛戒护锛-F琛ㄧず鍩熺殑鍒嗛殧绗︼紝鏄釜鍙夐」銆侳ilename鏄瓑寰呭鐞嗙殑鏂囦欢 灏嗘墍鏈夌殑...
绛旓細awk涓-v鍙傛暟鐨勪娇鐢ㄨ鏄 awk鏄竴娆惧己澶х殑鏂囨湰澶勭悊宸ュ叿锛屼富瑕佺敤浜庡湪鏂囨湰鏂囦欢涓悳绱㈠拰澶勭悊妯″紡銆傚湪awk鍛戒护涓紝-v鍙傛暟鐢ㄤ簬璁剧疆鍙橀噺鍙婂叾鍊笺傞氳繃璇ュ弬鏁帮紝鐢ㄦ埛鍙互鍦ㄦ墽琛宎wk鍛戒护涔嬪墠瀹氫箟鎴栦慨鏀瑰彉閲忥紝浠ヤ究鍦ㄥ悗缁殑鑴氭湰涓娇鐢ㄨ繖浜涘彉閲忋傝缁嗚В閲婂涓嬶細涓銆-v鍙傛暟鐨勫熀鏈敤娉 鍦╝wk鍛戒护涓紝-v鍙傛暟鍏佽鐢ㄦ埛瀹氫箟鎴栦慨鏀...
绛旓細linux涓awk鍛戒护璇﹁В锛烝WK鏄竴绉嶅鐞嗘枃鏈枃浠剁殑璇█锛屾槸涓涓己澶х殑鏂囨湰鍒嗘瀽宸ュ叿銆備箣鎵浠ュ彨AWK鏄洜涓哄叾鍙栦簡涓変綅鍒涘浜篈lfredAho锛孭eterWeinberger,鍜孊rianKernighan鐨凢amilyName鐨勯瀛楃銆傝娉 awk'script'var=valuefile(s)鎴 awk-fscriptfilevar=valuefile(s)閫夐」鍙傛暟璇存槑锛-Ffsor--field-separatorfs 鎸囧畾...