Awk_D3

本文深入讲解了awk命令的实用技巧,包括如何通过判断语句筛选特定数据,以及如何使用-F选项自定义列分隔符来精确提取信息。通过具体示例,如从ifconfig输出中获取非回环IP地址和从passwd文件中筛选使用bash的用户及其UID,帮助读者掌握awk的强大数据处理能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

awk 经过两天的训练,以及大概门路知道了。

今天还是边练习边总结
 



示例:

例子1、判断

基本语法:awk “{if(判断) 操作}”



最经典的是从ifconfig截取出ip地址,除了lo地址

先来分析一波 ifconfig的结果:
[root@Nick tmp]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.120.202 netmask 255.255.255.0 broadcast 192.168.120.255
inet6 fe80::50e7:a4f2:a202:b574 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:70:1a:db txqueuelen 1000 (Ethernet)
RX packets 20966 bytes 1753888 (1.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12447 bytes 1520008 (1.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 360 bytes 30772 (30.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 360 bytes 30772 (30.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

对于inet来说,他是第一列, ip地址是第二列,回环地址是127.0.0.1,我们可以用 $2!~ /127.0.0.1/来筛选


所以具体为操作是这样

[root@Nick tmp]# ifconfig | awk '{if($1=="inet"&& $2 !~ /127/) print$2 }'
192.168.120.202

总结:awk里面也可以添加判断语句,并且判断可以做 ==/!= 和 ~/!~两个类型判断
 



例子2、-F选项

-F选项

-F是设定列分隔符



筛选出,使用bash的用户名和uid
[root@Nick tmp]# awk -F: '{if($NF ~ /bash/) print $1,$3}' passwd
root 0
user2 1001
nick 1002
root1 1003
user1 1004
natasha 1005
harry 1006
ga 1008
gg 1009
ttt2 1010
mysql 996



passwd 里面的内容,都是以: 分割的列,我们需要用到-F: , 不用-F的时候默认用空格分割
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值