免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 4449 | 回复: 22
打印 上一主题 下一主题

[文本处理] 请教,如何根据一行数据的指定数值换行并输出的问题。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-04 11:37 |只看该作者 |倒序浏览
本帖最后由 shi007 于 2014-06-04 11:42 编辑

2013.May.01 19:01:03   Port A ('Port A:') 6 8 AA  BB CC DD EE FF GG HH II JJ KK 00 6 8  LL  MM NN OO QQ RR SS TT UU VV WW

2013.May.01 19:01:05   Port B  ('Port B:') 2 2 AA  BB CC DD EE FF  2 2 AA  BB CC DD  3  2  1  4 AA  BB CC DD EF FF FF FF

在txt文件中的第一段数据,
2013.May.01 19:01:03   Port A ('Port A:') 6 8 AA  BB CC DD EE FF GG HH II JJ KK 00  6 8 AA  BB CC DD QQ RR SS TT UU VV WW YY

我要根第二数值位的长度(已经标红)进行判断我该从第几位的字符段处换行,AA  BB CC DD是永久固定的长度,会变化的长度就是 EE FF GG HH II JJ KK 00这段,他的长度等于之前设定的8位。
想要的结果:
2013.May.01 19:01:03   Port A ('Port A:') 6 8 AA  BB CC DD EE FF GG HH II JJ KK 00
6 8 AA  BB CC DD QQ RR SS TT UU VV WW YY


第二段数据想要的结果:
2013.May.01 19:01:05   Port B  ('Port B:') 2 2 AA  BB CC DD EE FF  
2 2 AA  BB CC DD  3  2  
1 4 AA  BB CC DD EF FF FF FF

这里先谢谢了。

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
2 [报告]
发表于 2014-06-04 12:11 |只看该作者
  1. sed -r 's/([^)] +)([0-9] +[0-9] +[A-Z][A-Z])/\1\n\2/g'
复制代码

论坛徽章:
0
3 [报告]
发表于 2014-06-04 12:19 |只看该作者
dn833 发表于 2014-06-04 12:11

谢谢你的帮助。

论坛徽章:
2
水瓶座
日期:2014-02-28 14:20:09辰龙
日期:2014-06-16 13:18:51
4 [报告]
发表于 2014-06-04 13:01 |只看该作者
额。。。。楼上的答案和你描述的什么“标红”、“长度”没有关系啊,楼主误导人啊

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
5 [报告]
发表于 2014-06-04 13:04 |只看该作者
回复 4# rogantianwz
是啊,我也在纠结计算那些数字然后在合理的位置加换行,
那样不是很好搞。。。
   

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
6 [报告]
发表于 2014-06-04 13:09 |只看该作者
本帖最后由 jason680 于 2014-06-04 13:12 编辑

@Herowinter @rogantianwz

try this way with counter and length ...

$ awk 'NF<8{print$0}NF>8{p="";k=12+$8;for(n=1;n<NF;n++){printf p$n;p=" ";if(k==n){p="\n";k+=$(n+2)+6}}print""}' FILE
2013.May.01 19:01:03 Port A ('Port A:') 6 8 AA BB CC DD EE FF GG HH II JJ KK 00
6 8 LL MM NN OO QQ RR SS TT UU VV

2013.May.01 19:01:05 Port B ('Port B:') 2 2 AA BB CC DD EE FF
2 2 AA BB CC DD 3 2
1 4 AA BB CC DD EF FF FF

论坛徽章:
2
水瓶座
日期:2014-02-28 14:20:09辰龙
日期:2014-06-16 13:18:51
7 [报告]
发表于 2014-06-04 13:17 |只看该作者
回复 6# jason680


    {:3_189:} I like you

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
8 [报告]
发表于 2014-06-04 13:26 |只看该作者
回复 6# jason680
多谢多谢,是我自己想复杂了,直接$8就可以了,
我当时想得是在awk中自己实现类似于环视的功能
取那些数字。
  1. grep -Po "[0-9]+(?=\s*AA)"
复制代码

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
9 [报告]
发表于 2014-06-04 13:29 |只看该作者
各位的目测和理解力超群啊,或者是我找了数学老师补习语文了……

论坛徽章:
0
10 [报告]
发表于 2014-06-04 13:31 |只看该作者
dn833 发表于 2014-06-04 12:11


dn833 您能否详细的解释一行您的命令么?因为网上sed的正则例子比较多也杂乱。谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP