day19--操作系统awk命令

三剑客命令awk概述

gawk : pattern scanning and processing language
           可以进行模式扫描  和  是一门语言
语法 : awk [参数] '模式{动作}'  文件
       sed [参数] '条件 指令'   文件信息
  • awk 原理图
awk命令执行流程.png
  • 三剑客命令awk作用
处理文件信息:文本文件信息  日志文件信息  配置文件信息
处理方式文件:排除信息 查询信息 统计信息 替换信息 
对文件进行处理

三剑客命令awk操作

创建测试环境

    Zhang  Dandan    41117397    :250:100:175
    Zhang  Xiaoyu    390320151   :155:90:201
    Meng   Feixue    80042789    :250:60:50
    Wu     Waiwai    70271111    :250:80:75
    Liu    Bingbing  41117483    :250:100:175
    Wang   Xiaoai    3515064655  :50 :95 :135
    Zi     Gege      1986787350  :250:168:200
    Li     Youjiu    918391635   :175:75:300
    Lao    Nanhai    918391635   :250:100:175
  1. 显示xiaoyu的姓氏和ID号码
    awk '$2~/Xiaoyu/{print $1,$3}' reg.txt

    image.png

  2. 姓氏是Zhang的人,显示他的第二次捐款金额及他的名字
    awk -F "[: ]+" '$1~/Zhang/{print $1,$2,$5}' reg.txt

image.png
  1. 显示所有以41开头的ID号码的人的全名和ID号码
    awk '$3~/^41/{print $1,$2,$3}' reg.txt|column -t
image.png
  1. 显示所有ID号码最后一位数字是1或5的人的全名
    awk '$3~/[15]$/{print $1,$2}' reg.txt|column -t
image.png
  1. 获取文件中有井号或空行的内容, 将空行和井号信息的行排除

awk '$0!~/#|^$/' reg.txt ---方法一
awk '$0!~/#|^$/{print $0}' reg.txt ---方法二

image.png
  1. 显示Xiaoyu的捐款,每个捐款数额都是以110330
    awk 'NR>2' reg.txt 显示第二个以后的行 不包括第二行
    awk 'NR==2,NR==4' reg.txt 显示第2到第4行的数据
    awk 'NR==2;NR==4' reg.txt 分别显示第二行和第四行的数据

awk特殊模式:

BEGIN{动作}: 在处理文件之前,先做什么事情

image.png
  • 用于计算
image.png
  • 修改内置变量
    NF:取出最后一列
    awk '{print $(NF-1)}' reg.txt 取出倒数第二列
image.png

NR: 表示行信息
FS: 指定列分隔符, 默认识别空格为分割符

awk 'BEGIN{FS="[: ]+"}{print $4}' reg.txt

image.png

指定一个变量
awk -vFS="[: ]+" '{print $1,$4}' reg.txt

image.png
  • END{动作}: 在处理文件之后,再做什么事情
    awk 'BEGIN{print "姓","名","号码","捐款记录"}{print $0}END{print "学生捐款登记表"}' reg.txt|column -t
    image.png

实际作用:可以将统计后的最终结果进行输出

awk对文件进行统计分析

1) awk统计运算公式
    i=i+1

1.统计文件行数
awk '/oldboy/{i=i+1}END{print i}' test.txt
awk '/oldboy/{i++}END{print i}' test.txt

image.png

2.数值信息求和运算

sum=sum+$n  $n  你要对文件第几列信息做求和运算 

seq 10|awk '{sum=sum+$1}END{print sum}'

image.png

练习: 找出有faild信息, 总共出现了多少次 (awk统计)

awk '$6~/Failed/{i++}END{print i}' secure-20161219'

image.png

课程知识梳理

    1) awk命令概念介绍: 语法 原理 BEGIN 处理文件 END  
    2) awk命令操作说明: 作用 查询 排除 替换 
       参数:
       -F  : 指定列分割符号
       -v  : 指定变量信息    
       动作:
       print : 输出指定信息
       gsub  : 替换指定信息
       符号:
       ~   : 匹配信息         按照指定列进行匹配
       !~  : 将匹配的信息取反
       //  : 指定匹配信息
    3) awk命令模式分类 
       BEGIN{}:  处理文件前, 执行什么动作 
       END{}:    处理文件后, 执行什么动作  
       内置变量: FS NF NR --$0
    4) awk命令实现运算功能
       累加公式: i=i+1      i++
       求和运算: sum=sum+$n    

你可能感兴趣的:(day19--操作系统awk命令)