当前位置: 首页 > Linux

linuxawk

时间:2023-04-07 02:06:05 Linux

awk是一种在linux系统中广泛使用的编程语言。主要用于简单的脚本分析和统计。今天我们就来试一试,练习awkawk编程以行为为单位处理文件。语法是'pattern{action}'即:'pattern{action}'请记住,单引号和双引号必须进行转义。前提条件:系统中已经安装了awk,并且有一个我们练习的demo.txt文件。文件内容如下:user110maleuser220femaleuser318Femaleuser428Maleuser590Maleone,入门级使用输出demo文件内容:awk'{print$0}'demo.txtuser110Maleuser220Femaleuser318Femaleuser428Maleuser590Male1)所有模式动作都在单引号内2){print$0}这里是动作模式为空3)awk默认会遍历每一行进行匹配执行。$0是一个awk内置变量,代表这一行的所有内容。$1编码第一列$2表示第二列,依此类推4)awk默认使用空格和制表符作为分隔符来拆分每一行。可以使用参数-F来执行分隔符,比如-F#表示用#来分割这一行的内容5)也可以使用linux管道方式如:catdemo.txt|awk'{print$0}'6)awk有很多内置的常用变量,如NF(NumberofFileds),NR(NumberofRecords)等2.PatternDescription输出男性信息awk'/male/{print$0}'demo.txtuser110maleuser428maleuser590male1)这里/male/是模式可以使用正则匹配//是开始和结束字符。输出大于20岁的信息awk'$2>20{print$0}'demo.txtuser428maleuser590male1)pattern也可以用判断符号表示,比如><>=<=!=后输出,第一行会打印nameagesexawk'BEGIN{print"name","age","sex"}{print$0}'demo.txtnameagesexuser110maleuser220femaleuser318femaleuser428maleuser590男1)awk默认有BEGIN和END两个模式符号,分别代表所有命令执行的开始和结束2)这里的打印逗号相当于分隔符空格3.动作描述美化打印1)awk支持printf格式打印awk'{printf("%sageis%d\n",$1,$2)}'demo.txtuser1ageis10user2ageis20user3ageis18user4ageis28user5ageis90支持编程语法ifelsewhileetc.awk'{if($3=="male")printf("%sisaboy\n",$1)elseprintf("%sisagirl\n",$1)}'demo.txt4.补充说明awk是一种编程语言,支持的内容远不止于此。更多语法请下载手册参考:https://github.com/colasjun/awk