linux三剑客之awk的简单使用

本文详细介绍了awk命令行工具的使用方法,包括基本语法、条件判断、循环操作以及在处理网络流量信息和文件系统数据方面的应用。通过示例展示了awk如何提取文本文件中的特定列、过滤行以及进行逻辑组合操作。此外,还讲解了如何在awk中使用if分支和for循环处理数组。awk作为一种强大的文本分析工具,对于系统管理和日志分析等任务具有极高效率。
摘要由CSDN通过智能技术生成

awk使用方式:
1,前置指令 | awk 选项 条件 指令
2,awk 选项 条件 指令 被处理文档
选项 -F 定义分隔符
指令 print 输出

1.awk的基本使用

vim test.txt //准备素材,写入下列两行内容
hello the world
welcome to beijing

cp /etc/passwd /root/user

awk的内置变量: $1第1列 $2第2列 $3第3列 $0所有列 NR 行号 NF列号

awk '{print}' test.txt   //输出test所有行所有列
awk '{print $1}' test.txt  //输出test所有行第1列
awk '{print $2}' test.txt  //输出test所有行第2列
awk '/world/{print $2}' test.txt  //找到有world的行,然后输出第2列
awk '{print $0,$1}' test.txt  //找所有行的所有列和第1列
awk '{print NR}' test.txt  //输出每行的行号
awk -F: '{print $1" 的解释器是 "$7}'  user  //使用冒号作为分隔符,输出第1列,第7列,中间加常量,常量要使用双引号

利用awk提取本机的网络流量信息

ifconfig eth0 | awk '/RX p/{print "eth0网卡的接收流量是"$5"字节"}'
ifconfig eth0 | awk '/TX p/{print "eth0网卡的发送流量是"$5"字节"}'

使用awk提取根分区剩余容量

df -h | awk '/\/$/{print "根分区剩余容量是"$4}'

2.awk中的条件

a.用正则作为条件 ~ 包含 !~ 不包含
awk -F: '/bin/{print $1}' user    //输出有bin的行的第1列
awk -F: '$5~/bin/{print $1}' user  //输出第5列包含bin的行的第1列
awk -F: '$5!~/bin/{print $1}' user  //输出第5列不包含bin的行的第1列
b.使用数字、字符串
awk -F: 'NR==3{print}' /etc/passwd  //输出第3行
awk -F: '$3<10{print}' /etc/passwd  //输出UID小于10的行
awk -F: '$3>=1000{print}' /etc/passwd //输出UID大于等于1000的行
awk -F: '$7=="/bin/bash"{print}' /etc/passwd  //输出使用/bin/bash的用户
awk -F: '$7!="/bin/bash"{print}' /etc/passwd   //输出没使用/bin/bash的用户
awk -F: 'NR<11{print $1}' /etc/passwd   //查看前10行,并显示用户名
awk -F: '$7==" /bin/bash"{print $6}'  /etc/passwd //查看使用/bin/bash解释器的用户,并显示家目录
c.逻辑组合 &&并且 ||或者
awk -F: '$3<10&&$7~/bash/{print}' /etc/passwd  //找第3列小于10并且第7列包含bash的行,{print}可以省略
awk -F: '$3>=10&&$3<=20{print}' /etc/passwd  //找第3列大于等于10并且小于等于20的行
awk -F: 'NR>=2&&NR<=10{print}' /etc/passwd  //找2~10行
awk -F: '$3<5||$3>1000{print}' /etc/passwd  //找id号是小于5的或者大于1000的  

3.在awk中使用if分支

{if (条件){指令}else if (条件){指令}else{指令}}

awk -F: '{if($7~/bash/){x++}else if($7~/nologin/){y++}else{z++}}END{print x,y,z}' /etc/passwd  //统计系统中使用bash作为解释器的用户,使用nologin的用户,还有其他用户的数量

4.在awk中使用for循环遍历数组

awk 'BEGIN{a[1]=10;a[2]=20;for(i in a){print i}}' 
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值