• awk简介与表达式实例


    1、awk概述

    awk不仅仅是Linux系统中的一个命令,而且是一种编程语言

    它可以用来处理数据和生成报告(excel)

    处理的数据可以是一个或多个文件

    可以使直接来自标准输入、也可以是通过管道获取标准输入

    awk可以在命令行上直接编辑命令进行操作,也可以写成awk程序来进行更为复杂的操作

    2、awk环境简介

    3、awk的格式

    awk指令是由模式、动作、或者模式和动作的组合组成

    • pattern即模式:可以类似理解成sed的模式匹配,可以由表达式组成,也可以是两个正斜杠之间的正则表达式。如果NR==1,这就是模式,可以理解为一个条件
    • action即动作:是由在大括号里面的一条或多条语句组成,语句之间使用分号隔开

    4、记录和域

    名称含义
    record 记录,行
    filed 域,区域,字段,列
    1. NF(number of field):表示一行中的区域(列)数量,$NF取最后一个区域
    2. $ 符号:表示取某个列(区域),如:$1,$2,$NF
    3. NR(number of record):表示行号,awk对每一行的记录号都有一个内置变量NR来保存,每处理完一条记录NR的值都会自动 +1
    4. FS(-F)field separator:列分隔符,以什么把行分割成多列

    4.1 指定分隔符

    4.2 条件和动作

    4.3 只有条件

    4.4 只有动作

    默认处理所有行

    4.5 多个模式和动作

    4.6 $0

    awk中$0表示整行

    4.7 FNR

    FNR与NR类似,不过文件记录不递增,每个文件都从1开始

    5、正则表达式与操作符

    awk同sed一样也可以通过模式匹配来对输入的文本进行匹配处理

    awk也支持大量的正则表达式模式,大部分与sed支持的元字符类似

    awk支持的正则表达式元字符

    awk默认不支持的元字符,和需要添加参数才能支持的元字符

    正则表达式的运用,默认是在行内查找匹配的字符串,若有匹配则执行action操作,但是有时候仅需要固定的列表匹配指定的正则表达式

    如:

    想取/etc/passwd文件中第5列($5)这一列查找匹配mail字符串的行,这样就需要用另外两个匹配操作符。并且awk里面只有这两个操作符来匹配正则表达式

    正则匹配操作符说明
    ~ 用于对记录或区域的表达式进行匹配。
    !~ 用于表达与~相反的意思。

    正则实例

    1)显示awk.txt中GHI列

    2)显示包含321的行

    显示所有列,可以什么都不用加

    3)以#为分隔符,显示第一列以B开头或最后一列以1结尾的行

    • $1:第一列
    • ~:匹配
    • /^B/:以B开头
    • {print}:打印
    • $NF:最后一列
    • ~:匹配
    • /1$/:以1结尾
    • {print}:打印

    4)以#为分隔符,显示第一列以B或C开头的行

    6、比较表达式

    awk是一种编程语言,能够进行更为复杂的判断,当条件为真时,awk就执行相关的action,主要是在针对某一区域做出相关的判断,如打印成绩在80分以上的,这样就必须对这个区域做比较判断

    下表列出了awk可以使用的关系运算符,可以用来比较数字字符串,还有正则表达式,当表达式为真的时候,表达式结果为1,否则为0,只有表达式为真,awk才执行相关的action。

    awk支持的关系运算符

    运算符含义示例
    < 小于 x>y
    <= 小于或等于。 x<=y
    == 等于 x==y
    != 不等于 x!=y
    >= 大于或等于 x>=y
    > 大于 x<y

    显示awk.txt的第2,3行

  • 相关阅读:
    卷积层中的特征冗余
    【跨模态智能分析】人物关系检测、指代表达、指代分割
    【第1周作业】“乘风破浪的程序员小哥哥小姐姐” 成团时刻
    2020年秋季《软件工程》开课啦
    初入科研领域,如何正确做科研
    【WACV2020】ULSAM: Ultra-Lightweight Subspace Attention Module
    【ECCV2020】 Context-Gated Convolution
    【ECCV2020】WeightNet: Revisiting the Design Space of Weight Networks
    【ECCV2020】Image Inpainting via a Mutual Encoder-Decoder with Feature Equalizations
    【新生学习】课程学习记录
  • 原文地址:https://www.cnblogs.com/hyunbar/p/13255879.html
Copyright © 2020-2023  润新知