2021-01-10

#日常# awk的基础应用
概念:AWK是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一
awk:它是一个数据处理工具,也是一个逐行扫描文件。
格式:awk [-F field-separator] ‘commands’ filename
[-F field-separator]:这个选项如果是空文件则不必加,如果是像/etc/passwd文件则此文件各域以冒号作为分隔符,则必须指明-F选项,如:awk -F:
'commands’是要执行的命令动作
filename 处理的文件名,可以是多于一个文件的文件列表,awk将按顺序处理列表中的每个文件。
在不指名-F域分隔符的情况下,默认的域分隔符是空格或tab键。
常用选项:-F 指定以fs作为输入行的分隔符
-v 设置一个变量,初始值为val
完整格式:awk [-F field-separator] ‘匹配规则{执行命令}’ filename
任何awk语句都是由’匹配规则{执行命令}'组成,一个awk中可以有多个语句
匹配规则:“条件类型;awk保留字:BEGIN和END
关系做算符:> ,<,>=,<=,==,!=不等于
匹配表达式:~(匹配) !~(不匹配)
正则表达式:/正则/可以写入字符,可以支持正则表达式
逻辑运算符:&&逻辑与 || 逻辑或”
awk 使用数据字段变量
在 awk 中,默认的字段分隔符是任意的空白字符(例如空格或制表符)。
在文本行中,每个数据字段都是通过字段分隔符划分的(-F选项指定的分隔符)
awk 的主要特性之一是其处理文本文件中数据的能力,它会自动给一行中的每个数据字段分配一个变量
$0 代表整个文本行;
$1 代表文本行中的第 1 个数据字段;
$2 代表文本行中的第 2 个数据字段;
$n 代表文本行中的第 n 个数据字段。
执行命令:awk的执行命令在大括号{ }内指明。动作大多数用来打印(即print指令)
动作 action: 格式化输出print 流程控制语句if ,while,for
BEGIN和END
语法:awk [options] ‘BEGIN{ print “start” } 匹配规则{ commands } END{ print “end” }’ filename
因为BEGIN和END是关键字。所以必须大写,这两部分是开始块和结束块
BEGIN:旦BEGIN后的动作执行一次,当awk开始从文件中读入数据时,BEGIN 的条件就不再成立,所以BEGIN定义的动作只能被执行一次
通过BEGIN开始块来设置变量和标题
END:END也是awk的保留字,不过刚好和 BEGIN 相反。END 是在 awk 程序处理完所有数据,即将结束时执行的。END 后的动作只在程序结束时执行一次。
Awk的工作过程

  1. 先识别BEGIN块,
  2. 然后执行工作模块,在工作模块中,先读入数据,然后对读入数据执行body块命令,重复上面两步的操作直到文件结尾
  3. 最后执行END块
    以上执行过程是在BEGIN块和END块存在的情况下执行,如果不存在,执行awk默认的actions(是动作)
    练习:使用last命令查看最近登录系统的用户信息
    在这里插入图片描述
    Awk变量
    自定义变量:两种形式
    第一:-v 区分大小写
    第二:直接在program(程序)中进行,就是命令中
    第三:也可以应用命令行
    练习:统计某个目录下每个文件的大小及其总和,但要排除子目录
    在这里插入图片描述
    在这里插入图片描述
    Awk内置变量:
    $n 当前记录(当前行)的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段
    $0 这个变量包含执行过程中当前行的文本内容
    FILENAME 当前输入文件的名
    FS 字段分隔符(默认是任何空格)
    NF 表示字段数,在执行过程中对应于当前的字段数
    NR 表示记录数,在执行过程中对应于当前的行号
    FNR 各文件分别计数的行号
    练习:提取网卡的IP地址
    在这里插入图片描述
    统计当前内存的使用率
    在这里插入图片描述
    Awk控制语句
    if 语句
    if (条件) print
    if(条件){print}else{print}
    if(条件){print}else if(条件){print}else{print}
    练习:
    统计分区使用率,输出超过15%的分区信息
    在这里插入图片描述
    -F"[ %]+"表示将空格或%当做分隔符
    if语句使用的地方===》对awk来说,要对取得的整行或某个字段做条件判断
    while循环
    while(条件){语句} 如果条件为“真”进入循环,条件为“假”退出循环
    练习:
    统计成绩:
    在这里插入图片描述
    While循环练习
    在这里插入图片描述
    for循环
    语法:for(变量赋值;条件;迭代){命令}
    在这里插入图片描述
    特殊作用:它能够用来遍历数组中的元素
    打印奇数或偶数
    在这里插入图片描述
    数组
    定义:数组是一个包含一系列元素的集合
    格式:abc[1]=”xiaohong”
    abc[2]=”xiaolan”
    解释:
    abc :为数组名称
    [1]、[2]:为数组元素下标,可以理解为数组的第1个元素、数组的第2个元素
    ”xiaohong”、”xiaolan”: 元素内容
    遍历数组中的元素:
    需要使用到for循环:for(var in array){print array[var]}
    说明: for循环在每次循环时会将数组array的一个下标值赋给变量var,然后去执行大括号中的语句。还有一个需要注意的地方就是这个变量var中存储的是下标值而不是数组的元素值。我们可以把这个变量当作是数组的下标,然后来提取出对应元素值
    删除数组元素
    awk ‘BEGIN{test[1]=“a”;test[2]=“b”;for(i in test){print "Index:“i,”=====value:"test[i]}; delete test[2];print “---------”;for(i in test){print "Index:“i,”=====value:"test[i]}}’
    统计相同的网站出现的次数

Cut命令
定义:cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的。
参数:
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
脚本综合:
需求
类似++++系统管理工具箱++++++
h 显示命令帮助
f 显示磁盘分区
d 显示磁盘挂载
m 查看内存使用
u 查看系统负载
q 退出程序
脚本:
在这里插入图片描述
在这里插入图片描述
这两张图片是一个脚本

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值