awk学习笔记之实用案例

本文介绍了awk在处理文本时的多个实用案例,包括插入字段、格式化空白、筛选IPv4地址、读取配置文件段落、去重及统计。通过具体示例展示了awk在数据处理中的灵活性和强大功能。

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

案例1:插入几个新字段
在”a b c d”的b后面插入3个字段e f g
思路:在b后面插入e f g相当于在c前面插入e f g
在这里插入图片描述
Note:修改字段(会反馈给$0,相当于修改了$0)或者修改$0后会重建$0(根据OFS重建$0),OFS的默认值是一个空格。

案列2:格式化空白
移除每行的前缀、后缀、空白,并将各部分左对齐
原始文档格式
在这里插入图片描述
直接给字段赋原值就可以格式化文本,因为更改字段会以OFS重建$0

在这里插入图片描述
上面的方法是以单个空格隔开每个字段,但是我们想用制表符隔开每个字段的话,因该如下操作
在这里插入图片描述
案列3:筛选IPv4地址
从ifconfig命令的结果中筛选出除了lo网卡外的所有IPv4地址
方法1:

#ifconfig | awk '/inet / && !($2 ~ /^127/){print $2}'

在这里插入图片描述
方法2:
按段落读取,默认情况下awk是以行读取,所以需要修改输入分割控制符(RS)
RS="":按段落读取
RS="\0":一次性读取所有数据,但有些特殊文件中包含了空字符\0
RS="^$":真正的一次性读取所有数据,因为非空文件不可能匹配成功
RS="\n+":按行读取,但忽略所有空行

#ifconfig | awk 'BEGIN{RS=""}{print}'

在这里插入图片描述
只输出第一段落

#ifconfig |awk 'BEGIN{RS=""}NR==1{print}'

在这里插入图片描述
取得ip地址,需要知道其在第几个字段,字段默认是以空格划分的,所以数一下ip在第几个字段,注意换行符也是空格,所以ip在地6个字段

#ifconfig |awk 'BEGIN{RS=""}NR==1{print $6}'

在这里插入图片描述
但是以上取法不是很好,会受到网卡的排列顺序影响,进一步改进,将lo开头的网卡排除在外即可

#ifconfig |awk 'BEGIN{RS=""}!/^lo:/{print $6}'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DataGiant

您的鼓励是对我最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值