美文网首页
每天一个linux命令(10)AWK命令用法与举例

每天一个linux命令(10)AWK命令用法与举例

作者: HAO延WEI | 来源:发表于2019-10-30 21:05 被阅读0次

    一、AWK简介

    awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息
    awk处理过程: 依次对每一行进行处理,然后输出

    二、常用命令选项

    • -F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
    • -v var=value 赋值一个用户定义变量,将外部变量传递给awk
    • -f scripfile 从脚本文件中读取awk命令
    • -m[fr] val 对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。

    三、使用

    • awk 按照默认的空格或者tab分割
    • 变量NF表示当前行有多少个字段,因此$NF就代表最后一个字段。
    • $(NF-1)代表倒数第二个字段。
    #按照默认的空格或者tab分割
    Cat -n a.log|awk ‘{print $1}’  
    
    #按照自定义的字符分割,使用-F 后面单引号里面写入自定义的内容
    Cat -n a.log|awk  -F ‘:’  ‘{print $1}’ 
    
    #增加开始结束行的控制
    Cat -n a.log|awk ‘BEGIN{print “开始”} {if(“”!=$1)print$2} END{print “结束”}’
    
    #统计文件中的行数
    awk 'END{ print NR }' filename
    
    
    

    awk内置变量

    • ARGC 命令行参数个数
    • ARGV 命令行参数排列
    • ENVIRON 支持队列中系统环境变量的使用
    • FILENAME awk浏览的文件名
    • FNR 浏览文件的记录数
    • FS 设置输入域分隔符,等价于命令行 -F选项
    • NF 浏览记录的域的个数
    • NR 已读的记录数
    • OFS 输出域分隔符
    • ORS 输出记录分隔符
    • RS 控制记录分隔符
    #自定义变量 统计count
    awk 'BEGIN {count=0;print "[start]user count is ", count} {count=count+1;print $0;} END{print "[end]user count is ", count}' /etc/passwd
    
    #统计某个文件夹下的文件占用的字节数
    ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size}’
    
    #如果以M为单位显示:
    ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size/1024/1024,"M"}' 
    
    #统计某个文件夹下的文件占用的字节数,过滤4096大小的文件(一般都是文件夹):
    ls -l |awk 'BEGIN {size=0;print "[start]size is ", size} {if($5!=4096){size=size+$5;}} END{print "[end]size is ", size/1024/1024,"M"}' 
    

    相关文章

      网友评论

          本文标题:每天一个linux命令(10)AWK命令用法与举例

          本文链接:https://www.haomeiwen.com/subject/boeavctx.html