标题: [问题求助] gawk命令怎么连接连续的行(有条件限制)? [打印本页]
作者: JooKin 时间: 2012-5-26 22:57 标题: gawk命令怎么连接连续的行(有条件限制)?
文本:- DA,'11',0,'20010304174633',0,
- * 'D:\TRUMPF\TEILE\USER1\HALTER.GEO',5,'HALTER',0.00,
- * 15176.64,'',1,'Halter',1
- DA,'11',0,'20010304174811',0,'D:\TRUMPF\TEILE\USER1\MM.GEO',
- * 5,'MM',0.00,171148.46,'',2,'MM',1
- DA,'JY_184_088_08',0,'',0,
- * 'E:\冲床编程\H-汉威-184\20120500088控制柜\冲床下料\SPCC 2.0\JY-184-08',
- - '8-08.GMT',1,'JY-184-088-08',0.00,1364418.41,'','1','',1871.000,
- * 738.578,1
- DA,'JY_184_088_10',0,'',0,
- * 'E:\冲床编程\H-汉威-184\20120500088控制柜\冲床下料\SPCC 1.5\JY-184-08',
- - '8-10.GMT',3,'JY-184-088-10',0.00,132513.53,'','1','',700.000,190.800,1
复制代码
想要的格式是这样的:- DA,'11',0,'20010304174633',0,* 'D:\TRUMPF\TEILE\USER1\HALTER.GEO',5,'HALTER',0.00,* 15176.64,'',1,'Halter',1
- DA,'11',0,'20010304174811',0,'D:\TRUMPF\TEILE\USER1\MM.GEO',* 5,'MM',0.00,171148.46,'',2,'MM',1
- DA,'JY_184_088_08',0,'',0,* 'E:\冲床编程\H-汉威-184\20120500088控制柜\冲床下料\SPCC 2.0\JY-184-08',- '8-08.GMT',1,'JY-184-088-08',0.00,1364418.41,'','1','',1871.000,* 738.578,1
- DA,'JY_184_088_10',0,'',0,* 'E:\冲床编程\H-汉威-184\20120500088控制柜\冲床下料\SPCC 1.5\JY-184-08',- '8-10.GMT',3,'JY-184-088-10',0.00,132513.53,'','1','',700.000,190.800,1
复制代码
也就是条件是:
如果行的开头包含*或-这两种任意一种字符,就把该行跟它的上一行连接起来成为一行;反之,就另起一行,但是接下去的行是否连接成一行还是根据这个条件。
本人看了awk一些教程,但由于工作原因,没能亲身实践,只停留在看,虽然能看懂复杂一点的例子,但自己遇到实际问题自己就搞不定了,唉~求指导!
我自己是这样写的:- gawk "{x=$0;getline;while ($0~/^*/||$0~/^-/){x=x$0;getline};print x}" 1.txt
复制代码
但是不成功。
作者: gawk 时间: 2012-5-27 08:47
- gawk "{if(NR>1 && $0~/^DA,/)print \"\"; printf $0}" a.txt >b.txt
复制代码
作者: JooKin 时间: 2012-5-27 13:17
回复 2# gawk
谢谢回复,但是遇到-开头的就不行了,能再改改吗?
作者: gawk 时间: 2012-5-27 13:35
回复 3# JooKin
请把你的测试数据和测试解决贴出来看看
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |