shell脚本,awk如何处理文件中上下关联的两行。
文件d.txt如下内容
ggg 1
portals: 192.168.5.41:3260
werew 2
portals: 192.168.5.43:3260
如何把文件d.txt内容变为如下内容
ggg 192.168.5.41:3260
werew 192.168.5.43:3260
解题思路:
[root@localhost study]# awk '/port/{print a" "$2}{a=$1}' d.txt
ggg 192.168.5.41:3260
werew 192.168.5.43:3260
'/port/{print a" "$2}{a=$1}'
处理第一行的时候,以port开头吗?很明显,不以port开头,所以那个pattern不匹配,action不执行。但执行了后面的a=$1
处理第二行的时候,以port开头,打印出来a和本行$2,再处理就是个循环过程。
详细步骤:
由于第一行没有匹配以port开头的,所以print a" "$2不执行,执行a=$1. a=ggg
由于第二行有匹配以port开头的,所以print a" "$2行执行,由于a=ggg,所以输出 ggg 192.168.5.41:3260
由于第三行没有匹配以port开头的,所以print a" "$2不执行,执行a=$1. a=werew
由于第四行有匹配以port开头的,所以print a" "$2行执行,由于a=werew,所以输出 werew 192.168.5.43:3260
由此得到结果:
ggg 192.168.5.41:3260
werew 192.168.5.43:3260
【推荐】国内首个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
· .NET10 - 预览版1新功能体验(一)