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|
转载于:https://www.cnblogs.com/jnba/p/10641991.html
awk对某个字段分割处理相关推荐
- 文本替换sed+字段处理cut,join+awk重新编排字段
[1]sed工具(Stream Editor)--流编辑器 sed 本身也是一个管线(管道)命令,可以分析 standard input 的啦! 而且 sed 还可以将数据进行取代.删除.新增.截取特 ...
- ArcGIS模型构建器批量将多个图层根据字段分割
01 前言 昨日有网友提了一个需求:自己有一个省或者全国的很多个POI图层,包括很多类别(政府机构.医疗服务.文体娱乐设施等),自己想要将每个类别的图层根据字段分割成每个地级市. (我这里选了医疗保健 ...
- windows bat系列4:for处理案例一 逐行处理字段分割
背景 假设有文件内容如下,其以列表形式显示了不同文件夹中文件数量,要求提取清单列中最后一列的数字. CHECK IS THERE ANY INTERFACE FILES IN I/O DIRS --- ...
- sed查找文件包含字段_sed(查找替换) 与awk(提取字段)
通常: sed 处理列 awk处理行 比较方便 Sed是一个基本的查找替换程序 sed -i "s/^@//g" 文件 #原地操作原文件,进行替换 cat ...
- awk和cut分割字符区别
awk默认以空格为分割域,比如我想获得某进程pid: [root@SHCTC-GAME12-44 ~]# ps -ef|grep "sshd -f"|grep -v grep ro ...
- shell --- awk规范 系统总结
文章目录 awk和sed的区别 awk脚本的流程控制 awk 记录和字段 字段的引用 awk表达式 赋值操作符 算数操作符 系统变量(awk本身自定义的系统变量) 关系操作符 布尔操作符 awk 条件 ...
- linux学习-awk工具
awk是基于列的文本处理工具,它的工作方式是按行读取文本并视为一条记录,每条记录以字段分割成若干字段,然后输出个字段的值,事实上,awk是一种编程语言.awk认为文件都是结构化的,也就是说由单词和各种 ...
- AWK神器,继续案例
例子一:打印文件N到N+M行 -F :允许awk更改其字段分隔符 -v :var=val把val值赋值给var如果有多个变量要赋值,那么就写多个-v,每个变量赋值对应一个-v cat txt 1.02 ...
- awk是什么?awk工作原理是什么?怎么用awk?
一.awk介绍 1. awk概述awk是一种==编程语言==,主要用于在linux/unix下对==文本和数据==进行处理,是linux/unix下的一个工具.数据可以来自标准输入.一个或多个文件, ...
最新文章
- JavaScript 基础,登录验证
- java reference详解_Java Reference详解
- 二级分类_免费获取2021年二级造价工程师考试大纲
- Shell脚本之sed的使用
- 批量提取视频文件信息(文件大小及时长)并统计
- 全球首发免费的MySql for Entity Framework Core
- python递归算法_python递归算法(上)
- 程序员如何淡定度过 2.14 情人节?
- diff测试与流量回放测试
- java:通过Calendar类正确计算两日期之间的间隔
- Onvif协议之服务端开发基本流程
- 地图编辑器怎样炼成的
- 串口 单片机 文件_DIY迷你单片机学习板
- 错误的SQL脚本,错误消息 4104
- 油溶性CdSe/ZnS量子点,以CdSe为核心,ZnS为壳层,表面由疏水配体包裹的核/壳型荧光纳米材料
- 不带搜索框,数据同步请求,产品按字母分组组件
- IBM云对象存储Cleversafe 大力拓展全新战场
- matlab在矿物加工中的应用,试述《矿物加工数学模型》在矿物加工中的作用
- Excel·VBA选中列一键计算小计总计
- 硅谷最有权势的人:孙正义和他的愿景帝国
热门文章
- LeetCode 17电话号码的字母组合(搜索)18四数之和
- Oracle中的序列 sequence 用法
- Gentoo 安装日记 14 (配置内核 :设备驱动)
- 深究AngularJS——下拉框(selected)
- java 画图覆盖_请教如何在java画图中不覆盖原来的画图???
- java_opts gc回收器_JVM之垃圾回收机制(GC)
- java 检查pos机状态_POS机故障大全及排查方法
- 判别两棵树是否相等 设计算法_从匈牙利算法到KM算法
- 重磅发布 | 30+ 阿里巴巴云原生「顶流」,给你一堂《云原生技术实践公开课》
- 正则表达式笔试题php,2017年初级PHP程序员笔试题