awk对某个字段分割处理
工作中遇到要根据文件中某个字段分割成多行文本的处理,想到用awk处理,这里记录下:
问题:
原文件:假设一共2个字段,用“|”分割,其中第二个字段用“#”分割,但该字段中也有不含“#”的值和空值
要求:根据第二个字段,若含#,将这条数据根据#分割成多条数据,无#和无值的行不变
202143108500|#0_1000_VOICE#0_1000_VOICE#0_1000_VOICE#0_TRAFFIC#0_TRAFFIC#0_TRAFFIC 202121366359|#0_1000_VOICE#0_TRAFFIC 202143108500|#0_1000_VOICE#0_1000_VOICE#0_1000_VOICE#0_TRAFFIC#0_TRAFFIC#0_TRAFFIC 202121366359|#0_1000_VOICE#0_TRAFFIC 202113492312|W_GH_YYM 202132164529|
用awk解决:
1、将含“#”的一行变多行
awk -F "|" -vOFS="|" '{l=split($2,arr,"#");for(i=1;i<l;i++){$2=arr[i+1];print}}' ./test.txt
结果:
202143108500|0_1000_VOICE 202143108500|0_1000_VOICE 202143108500|0_1000_VOICE 202143108500|0_TRAFFIC 202143108500|0_TRAFFIC 202143108500|0_TRAFFIC 202121366359|0_1000_VOICE 202121366359|0_TRAFFIC 202143108500|0_1000_VOICE 202143108500|0_1000_VOICE 202143108500|0_1000_VOICE 202143108500|0_TRAFFIC 202143108500|0_TRAFFIC 202143108500|0_TRAFFIC 202121366359|0_1000_VOICE 202121366359|0_TRAFFIC
2、将不含“#”筛选出来
awk -F "|" '$2!~/#/{print}' ./test.txt
结果:
202113492312|W_GH_YYM 202132164529|
经过上面两步就可以解决,将结果生成新的文件 a.txt
awk -F "|" -vOFS="|" '{l=split($2,arr,"#");for(i=1;i<l;i++){$2=arr[i+1];print}}' ./test.txt >a.txt awk -F "|" '$2!~/#/{print}' ./test.txt >>a.txt
a.txt:
202143108500|0_1000_VOICE 202143108500|0_1000_VOICE 202143108500|0_1000_VOICE 202143108500|0_TRAFFIC 202143108500|0_TRAFFIC 202143108500|0_TRAFFIC 202121366359|0_1000_VOICE 202121366359|0_TRAFFIC 202143108500|0_1000_VOICE 202143108500|0_1000_VOICE 202143108500|0_1000_VOICE 202143108500|0_TRAFFIC 202143108500|0_TRAFFIC 202143108500|0_TRAFFIC 202121366359|0_1000_VOICE 202121366359|0_TRAFFIC 202113492312|W_GH_YYM 202132164529|
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具