统计分析-awk

awk概念介绍说明:

       擅长分析文件内容,擅长对文件中的列进行操作

作用特点:

        1.排除信息

        2.查询信息

        3.统计信息

        4.替换信息

1)命令查询信息方法

        1.按照行号查询信息:

         awk 'NR==2' awk_test.txt                        ---查询单行

         awk 'NR==2,NR==4' awk_test.txt           ---查询连续多行

         awk 'NR==2;NR==4' awk_test.txt           ---查询不连续行

        2.按照字符查询信息

        awk '/Xiaoyu/{print $1,$3}'  awk_test.txt

        awk '/Xiaoyu/,/Waiwai/' awk_test.txt

        awk '/Xiaoyu/;/Waiwai/' awk_test.txt

测验:01.显示Xiaoyu的姓氏和ID号码

        awk '/Xiaoyu/{print $1,$3}' awk_test.txt

          02.姓氏是Zhang的人,显示他的第二次捐款金额及他的名字

         awk -F "[ :]+" '/^Zhang/{print $1,$2,$(NF-1)}' awk_test.txt

         03. 显示所有以41开头的ID号码的人的全名和ID号码
        awk '$3~/^41/{print $1,$2,$3}' awk_test.txt 

         04. 显示所有ID号码最后一位数字是1或5的人的全名

         方法一:awk '$3~/1$|5$/{print $1,$2}' awk_test.txt|column -t

         方法二: awk '$3~/[15]$/{print $1,$2}' awk_test.txt|column -t

         方法三: awk '$3~/(1|5)$/{print $1,$2}' awk_test.txt|column -t

       05. 显示Xiaoyu的捐款,每个捐款数值前面都有以$开头, 如$110$220$330

       gsub(/需要替换的信息/,"修改成什么信息",将哪列信息进行修改)

       awk '$2~/Xiaoyu/{gsub(/:/,"$",$NF);print $NF}' awk_test.txt 

       06.文件中空行进行排除/文件中注释信息进行排除

       grep -Ev "^#|^$"  文件信息 
       sed -n '/^#|^$/!p' 文件信息
       awk '$0!~/^$/'  awk_test.txt 

总结:awk命令中$符号用法
    $1 $2 $3 : 取第几列信息
    $NF      : 取最后一列
    $(NF-n)  : 取倒数第几列
    $0       : 取所有列的信息
    
    如何利用awk取出IP地址信息:
    ip a s eth0|awk -F "[ /]+" 'NR==3{print $6}'
    hostname -i 

特殊的模式
    BEGIN{}  在awk执行命令前做什么事情:
awk 'BEGIN{print "姓","名","QQ号","捐款记录"}{print $0}' awk_test.txt |column -t

修改内置分隔符变量

awk -F ":" '{print $2}' awk_test.txt

 

END{}  在awk执行命令结束之后做的操作
 awk 'BEGIN{print "姓","名","QQ号","捐款记录"}{print $0}END{print "操作结束"}' awk_test.txt |column -t 

 统计累加运算测试:
    01. 统计/etc/services文件中空行数量

     awk '/^$/{i=i+1}END{print i}' /etc/services 

02. 统计/etc/services文件中有井号开头的行
    awk '/^#/{i++}END{print i}' /etc/services

03. 统计系统中有多少个虚拟用户 普通用户

awk '$NF~/bash/{i=i+1}END{print i}' /etc/passwd
    63
    虚拟用户数量
awk '$NF!~/bash/{i=i+1}END{print i}' /etc/passwd
    22

求和运算:
    sum=sum+$n(需要进行数值求和的列)
seq 10|awk '{sum=sum+$1;print sum}'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值