zoukankan      html  css  js  c++  java
  • linux_三剑客_awk

    概念介绍

    awk是一种可以处理数据、产生格式化报表的语言,功能十分强大。awk 认为文件中的每一行是一条记录 记录与记录的分隔符为换行符,
    每一列是一个字段 字段与字段的分隔符默认是一个或多个空格或tab制表符.
    awk的工作方式是读取数据,将每一行数据视为一条记录(record)每条记录以字段分隔符分成若干字段,然后输出各个字段的值. gawk
    - pattern scanning and processing language             模式扫描 和 处理语言

     作用说明:

    擅长对列进行操作 擅长对日志文件进行分析处理

    执行原理:

    语法结构:

    awk 参数 '匹配模式 {动作指令}' 文件信息
    sed 参数 '匹配条件 动作指令 ' 文件信息

    基础操作部分:

    查询筛选,排除指定信息,模拟替换修改信息
    
    -F " "  指定列的分隔符(参数)
    
      awk默认以空格作为分隔列的符号, 默认有多个连续的空格看做一个整体
    
      awk使用了-F指定分隔符号,多个空格之间也表示一列或者多列信息

    
    
    -f file 指定读取程序的文件名
    -v var=value 定义awk程序中使用的变量和默认值
    
    注意:awk 程序脚本由左大括号和右大括号定义。脚本命令必须放置在两个大括号之间。由于awk命令行假定脚本是单文本字符串,所以必须将脚本包
    括在单引号内。

    内置变量:

    NR== 显示指定行号信息(模式)
    
    NF 表示文件中列信息 $NF 取出最后一列 $(NF-1) 取出文件倒数第二列
    FS 表示指定分隔符信息 -F == FS
    字段提取:提取一个文本中的一列数据并打印输出
    
    字段相关内置变量
    
    $0 表示整行文本
    $1 表示文本行中的第一个数据字段
    $2 表示文本行中的第二个数据字段
    $N 表示文本行中的第N个数据字段
    $NF 表示文本行中的最后一个数据字段

    print gsub 显示指定列的信息(动作)

    awk修改替换指令: gsub --- gawk substitute
    awk替换指令用户: gsub(/要替换的信息/,"替换成什么信息",$将第几列信息做替换)

    awk程序运行优先级是:

    1)BEGIN: 在开始处理数据流之前执行,可选项
    2)program: 如何处理数据流,必选项
    3)END: 处理完数据流后执行,可选项

    测试环境准备:

    基础练习题目:

    01. 显示xiaoyu的姓氏和ID号码
    方法一: 根据文件行号,显示指定内容
    1) 找出有xiaoyu信息的行

    2) 显示指定列信息 第一列 第三列


    方法二: 根据字符信息,显示指定内容
    1) 找出第二列有xiaoyu信息的行

    2) 显示指定列信息 第一列 第三列

    02. 姓氏是Zhang的人,显示他的第二次捐款金额及他的名字
    第一个历程: 找出姓氏是zhang

    第二个历程: 显示输出第二次捐款记录以及名字


    03. 显示所有以41开头的ID号码的人的全名和ID号码
    第一个历程: 找出以41开头ID号码信息

    第二个历程: 显示出指定列


    04. 不要显示所有以41开头ID号码的人全名和ID, 将其他人员全名和ID号码显示

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

    06. 显示Xiaoyu的捐款,每个时都有以$开头, 如$110$220$330 ---替换
    第一个历程: 将指定金额进行显示

    第二个历程: 将金额表示形式修改为用$表示

    练习:
    01. 如何取出IP地址
    第一个历程: 如何显示出IP地址
    第二个历程: 显示有IP地址指定行

    第三个历程: 显示IP地址



    02. 如何取出文件权限数值

    专业的命令获取文件的权限

    高级操作部分: 对日志文件进行分析处理

    awk程序的优先级

    关于awk程序的执行优先级,BEGIN是优先级最高的代码块,是在执行PROGRAM之前执行的,

    不需要提供数据源,因为不涉及到任何数据的处理,也不依赖与PROGRAM代码块;

    PROGRAM是对数据流干什么,是必选代码块,也是默认代码块。所以在执行时必须提供数据源;

    END是处理完数据流后的操作,如果需要执行END代码块,就必须需要PROGRAM的支持,单个无法执行。

    awk模式作用:
      · 普通模式: 正则信息进行匹配 比较方式匹配信息 范围模式
       · 特殊模式:
    BEGIN: 在处理文件内容之前,完成BEGIN操作过程

    【在BEGIN中设置变量信息】

     【END:    在处理文件内容之后,完成END操作过程】

     

    用法

    awk定义数组

    数组定义方式: 数组名[索引]=值

    awk运算

    1. 赋值运算 =
    2. 比较运算 > >= == < <= !=
    3. 数学运算 + - * / % ** ++ --
    4. 逻辑运算 && ||
    5. 匹配运算 ~ !~

    1.赋值运算:主要是对变量或者数组赋值,如:

    变量赋值 name='baism' school='ayitula'

    数组赋值 array[0]=100

    2.比较运算,如果比较的是字符串则按ascii编码顺序表比较。如果结果返回为真则用1表示,如果返回为假则用0表示

    3.数学运算

    awk做运算方法:
    1) 累加运算: i=i+1 最初i=0 i=0+1 i=1 i=1+1 i=2
    i++
    2) 求和运算: sum=sum+$n 最初sum=0 $n表示取第几列信息做求和运算

    4.逻辑运算

    与运算:真真为真,真假为假,假假为假

    或运算:真真为真, 真假为真,假假为假

    5.匹配运算

    高级算法

    awk -v 创建或修改awk变量,-v参数相当于是 shell(脚本或命令行) 与 awk桥梁

    [root@web01 ~]$awk -v n=10 'BEGIN{print n*n, n/n}'
    100 1

    [root@web01 ~]$x=10
    [root@web01 ~]$y=20
    [root@web01 ~]$awk -vn1=$x -vn2=$y 'BEGIN{print n1/n2, n1-n2, n1*n2}'
    0.5 -10 200

  • 相关阅读:
    RDIFramework.NET V3.3 WinForm版新增日程管理功能模块
    RDIFramework.NET V3.3 WinForm版角色授权管理新增角色对操作权限项、模块起止生效日期的设置
    RDIFramework.NET V3.3 Web版角色授权管理新增角色对操作权限项、模块起止生效日期的设置
    前端神器-神级代码编辑软件Sublime Text下载、使用教程、插件推荐说明、全套快捷键
    C# net request payload形式发送post请求
    RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2版本正式发布
    RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->WinForm版本重构岗位授权管理界面更规范、高效与美观
    NET快速信息化系统开发框架 V3.2 ->WinForm部分全部重构为Dev风格界面
    NET快速信息化系统开发框架 V3.2 -> “用户管理”主界面使用多表头展示、增加打印功能
    SQLServer特殊字符/生僻字与varchar
  • 原文地址:https://www.cnblogs.com/zhanghongqi/p/11622292.html
Copyright © 2011-2022 走看看