awk的应用

一、awk的工作原理

awk与sed和grep共成为文本三剑客,都是针对文本非常实用的工具。
awk的工作原理:
遂行读取文本,默认以空格或者tab(制表符)键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。
sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个“字段”然后再进行处理。awk信息的读入也是遂行读取的,执行结果可以通过print的功能将字段数据打印显示。在使用awk命令的过程中,可以使用逻辑操作符“&&”表示"与"、“||”表示“或”、“!”表示“非”;还可以进行简单的数学运算,如+、-、*、/、%、^分别表示加、减、乘、除、取余和乘方。

其命令格式为:
awk 选项 ‘模式或条件{操作}’ 文件1 文件2 .。。。
awk -f 脚本文件 文件1 文件2

awk常见的内建变量(可直接用)如下所示:

FS:列分隔符。指定每行文本的字段分隔符,默认为空格或制表位。与“-F”作用相同
NF:当前处理的行的字段个数
NR:当前处理的行的行号(序数)。
$0:当前处理的行的整行内容。
$n:当前处理行的第n个字段(第n列)。
FILENAME:被处理的文件名。
RS:行分隔符。awk从文件上读取资料时,将根据RS的定义吧资料切割成许多条记录,而awk一次仅读取一条记录,以进行处理。预设值是‘\n’

二、实际应用

按行输出文本

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

按字段输出文本

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

时间的使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看各个功能

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
BEGIN中的命令只执行一次,awk数组的下标除了可以使用数字,也可以使用字符串,但是字符串必须加双引号

在这里插入图片描述
-v:设置变量
<<<:表示将后面的内容作为前面命令的标准输入
awk’1’:就算awk‘1{print}’,允许打印读入的行内容
awk’0’:就算awk‘0{print}’,不允许打印读入的行内容
var++的形式:先读取var的变量值,再对var值+1

awk 处理第一行时:先读取 a[$1] 值再自增,a[$1] 即 a[1] 值为空(即0),即为 awk ‘!0’,即为 awk ‘1’,即为 awk’1{print}’
awk 处理第二行时:先读取 a[$1] 值再自增,a[$1] 即 a[1] 值为 1,即为 awk ‘!1’,即为 awk ‘0’,即为 awk ‘0{print}’
ip=ifconfig ens33 | awk '/inet /{print $2}'
echo “本地IP地址是:”$ip
cpu=uptime | awk '{print $NF}'
#awk中NF为当前行的列数, N F 是最后一列 e c h o " 本机 C P U 最近 15 分钟的负载是 : " NF是最后一列 echo "本机CPU最近15分钟的负载是:" NF是最后一列echo"本机CPU最近15分钟的负载是:"cpu
net_in=ifconfig ens33 | awk '/RX p/{print $5}'
echo “入站网卡流量为:”$net_in
net_out=ifconfig ens33 | awk '/TX p/{print $5}'
echo “出站网卡流量为:”$net_out
mem=free -m | awk '/^Mem/{print $4)'
echo “内存剩余容量为:”$mem
disk=df -h | awk '/sda1/{print $4}'
echo "根分区剩余容量为:" d i s k u s e r = ‘ c a t / e t c / p a s s w d ∣ w c − l ‘ e c h o " 本地账户数量为 : " disk user=`cat /etc/passwd |wc -l` echo "本地账户数量为:" diskuser=cat/etc/passwdwclecho"本地账户数量为:"user
login=who | wc -l
echo "当前登陆计算机的账户数量为:" l o g i n p r o c e s s = ‘ p s a u x ∣ w c − l ‘ e c h o " 当前计算机启动的进程数量为 : " login process=`ps aux | wc -l` echo "当前计算机启动的进程数量为:" loginprocess=psauxwclecho"当前计算机启动的进程数量为:"process
soft=rpm -qa | wc -l
echo “当前计算机已安装的软件数量为:”$soft

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值