“Linux文本三剑客”中的awk命令

一、awk介绍

1.1 awk概述

  • 逐行读取输入的文本内容,默认以空格和tab键做为分隔符,但是多个空格或者tab键会自动压缩成一个。按照指定的模式或者条件执行编辑命令,是功能最强大的文本工具(针对文本内容)
  • 逐行匹配,对符合条件的内容才会进行格式化输出或过滤
  • 可以在免交互的情况下实现复杂的文本操作,完成自动化的配置

1.2 awk命令格式

二、awk常用操作命令及选项

2.1 内置变量介绍

NR需要处理的行号
FS列分割符,和-F作用一致
OFS输出内容的列分隔符
NF表示最后一个字段

2.2 打印操作

文件行号和内容都打印

打印指定行

指定连续行数打印

指定不连续的行数打印

打印奇数行和偶数行

2.3 运算

2.4 按行取列

2.5 -F选项

指定分割符,如果分隔符是空格或者tab键可以不加

示例:过滤出文件中的主机名前缀

2.6 条件判断打印

精准筛选用法:

$(><==)进行数值对比
$n~"字符串"代表此字段包含某个字符串
$n!~"字符串"代表此字段不包含某字符串
$n=="字符串"代表此字段和此字符串相同
$n!=="字符串"代表此字段不为此字符串

示例1:输出etc/passwd文件中最后一列包含bash的所在行的第一个字段和最后一个字段

示例2:输出/etc/passwd文件中第一列是root的行的第6列

示例3:输出/etc/passwd文件中最后一个字段不包含bash的行的第1和第6列

示例4:输出/etc/passwd文件中第六个字段为/home/ovo并且最后一个字段为/bin/bash的行的第一和最后一列

示例5:输出/etc/passwd文件中所有第三列大于五百的行

也可以用if语句进行筛选输出

2.7 三元表达式

格式:
awk '{条件表达式1?A表达式或者值:B表达式或者值}' 文件名

示例:

2.8 根据文本内容匹配过滤并打印

匹配行开头或结尾内容

示例:

匹配包含内容

示例:

2.9 getline函数

getline和管道符以及重定向符号在一块的时候才有特殊功效

|:输出指定内容到定义的变量,getline调用变量中的内容,打印结果

getline既没有重定向也没有管道符时,相当于输出奇数行后者偶数行

原因:getline函数运行之后,会改变awk的内置变量,读取的行数也就发生变化,getline在前就是跳过第一行,打印第二行;getline在后就直接打印然后跳过一行

2.10 -v选项

变量赋值,不能从外部获取变量值,只能在内部赋值

示例1:

示例2:

2.11 BEGIN模式

对变量初始化:

2.12 awk和数组结合使用

示例1:

示例2:通过数组遍历的方式去重并展示结果

2.13 awk的取小数点后几位和保留整数

三、总结练习

3.1 监控系统的内存、磁盘使用情况

内存监控:

用used/total

磁盘使用情况:

写入函数库:

3.2 统计/etc目录下所有文件大小的总和

[root@pup1 ~]# ll /etc/ | awk '/^-/{sum+=$5} END{print "文件总大小:"sum/1024"M"}'
文件总大小:976.188M
#文件在ll的展示结果下以-开头,所以筛选出以-为首的行,然后进行第五列字段的相加

3.3 统计磁盘已用容量

[root@pup1 ~]# df | awk 'NR>1{sum+=$3} END{print "磁盘的已用容量为:"sum/1024/1024"G"}'磁盘的已用容量为:8.42375G

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值