awk的基本?法-qq5c821d0f2609a的博客

Windows Windows 2个月前 (08-15) 12次浏览 未收录 0个评论 扫描二维码

awk的基本?法

awk是报告?成器,格式化?本输出,有多种版本。centos中的是gawk即GNU awk版本。

awk?作原理:第?步:执?BEGIN{action;…}语句块中的语句。第?步:从?件或标准输?(stdin)读取??,然后执?pattern{action;…}语句块,它逐?扫描?件,从第??到最后??重复这个过程,直到?件全部被读取完毕。第三步:当读?输?流末尾时,执?END{action;…}语句块。BEGIN语句块在awk开始从输?流中读取?之前被执?,这是?个可选的语句块,?如变量初始化、打印输出表格的表头等语句通常可写咋BEGIN语句块中。END语句块在awk从输?流中读完所有的?之后被执?,?如打印所有?的分析结果这类信息汇总都是在END语句块中完成,它也是?个可选语句块。pattern语句块中的通?命令是最重要的部分,也是可选的。如果没有提供pattern语句块,则默认执?{print},即打印每?个读取到的?,awk读取的每??都会执?该语句块。print格式:print item1, item2, …

注意:逗号分隔符;输出的各item可以是字符串,也可是数值;当前记录的字段、变量或awk的表达式;如省略item,相当于print $0。

awk基本?法

awk [options] ‘program’ var=value file … awk [options] -f programfile var=value file … awk [options] ‘BEGIN{ action;…} pattern{ action;… } END{ action;… }’ file …awk程序通常由:BEGIN语句块、能够使?模式匹配的通?语句块、END语句块等三部分组成。program通常是被单引号或双引号括起来。选项:-F:指明输?时?到的字段分隔符;-v var=value:?定义变量。

基本格式:awk [options] ‘program’ fileprogram:表?为pattern{action statements;…}pattern:表?部分决定动作语句何时触发及触发事件BEGIN、END;action statements:表?对数据进?处理,放置{}内指明print、printf。分隔符、域和记录:awk执?时,由分隔符的字段(域)标记$1,$2…$n称为域标识。$0为所有域,注意:和shell中变量$符含义不同;?件的每??称为记录;省略action,则默认执?print $0的操作。

[root@magedu ~]# head -10 /etc/passwd > awktest.txt 解释:生成需要的测试数据 【例1】awk省略action,默认执?print $0[root@CentOS7 17chapter]#awk ‘{print}’ awktest.txtroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/sync

例2】指定:(冒号)为分隔符,打印每?记录的第?个字段即输出$1

awk -F: ‘{print $1}’ awktest.txtroot bin daemon adm lp sync

例3】取出磁盘使?率[root@localhost ~]# df |grep “^/dev”|awk ‘{print $5}’ 24% 19% 100%

awk的变量?法内置变量:FS:输??动分隔符,默认为空?字符;OFS:输出?动分隔符,默认为空?字符;RS:输?记录分隔符,指定输?时的换?符,原换?符仍有效;ORS:输出记录分隔符,输出时?指定符号代替换?符;NF:字段数量;NR:?号;(以记录分隔符为标准)FNR:各?件分别计数,记录号;FILENAME:当前?件名;ARGC:命令?参数的个数;

喜欢 (0)
[]
分享 (0)
关于作者:
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址