(7)awk筛选行和处理字段的示例
awk数据筛选示例
筛选行
# 1.根据行号筛选 awk 'NR==2' a.txt # 筛选出第二行 awk 'NR>=2' a.txt # 输出第2行和之后的行 # 2.根据正则表达式筛选整行 awk '/qq.com/' a.txt # 输出带有qq.com的行 awk '$0 ~ /qq.com/' a.txt # 等价于上面命令 awk '/^[^@]+$/' a.txt # 输出不包含@符号的行 awk '!/@/' a.txt # 输出不包含@符号的行 # 3.根据字段来筛选行 awk '($4+0) > 24{print $0}' a.txt # 输出第4字段大于24的行 awk '$5 ~ /qq.com/' a.txt # 输出第5字段包含qq.com的行 # 4.将多个筛选条件结合起来进行筛选 awk 'NR>=2 && NR<=7' a.txt awk '$3=="male" && $6 ~ /^170/' a.txt awk '$3=="male" || $6 ~ /^170/' a.txt # 5.按照范围进行筛选 flip flop # pattern1,pattern2{action} awk 'NR==2,NR==7' a.txt # 输出第2到第7行 awk 'NR==2,$6 ~ /^170/' a.txt
处理字段
修改字段时,一定要注意,可能带来的联动效应:即使用OFS重建$0。
awk 'NR>1{$4=$4+5;print $0}' a.txt awk 'BEGIN{OFS="-"}NR>1{$4=$4+5;print $0}' a.txt awk 'NR>1{$6=$6"*";print $0}' a.txt
awk运维面试试题
从ifconfig命令的结果中筛选出除了lo网卡外的所有IPv4地址。
[root@docker-01 ~]# ifconfig | awk '/inet / && !($2 ~ /^127/){print $2}' 172.17.0.1 192.168.1.220 # 1.法一:多条件筛选 [root@docker-01 ~]# ifconfig | awk 'BEGIN{RS=""}!/lo/{print $6}' 172.17.0.1 # 2.法二:按段落读取,然后取IPv4字段 [root@docker-01 ~]# ifconfig | awk 'BEGIN{RS="";FS="\n"}!/lo/{$0=$2;FS=" ";$0=$0;print $2}' 172.17.0.1 # 3.法三:按段落读取,每行1字段,然后取IPv4字段
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?