免费注册 查看新帖 |

Chinaunix

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

[文本处理] 我想把文件里一段段文本每行的\n替换成#,末行除外 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-22 16:55 |只看该作者 |倒序浏览
如题:我想把文件里一段一段文本每行的\n替换成#,末行除外。该怎么做?

例如这个文本,
SEVERE: Error code:61
ID:  113808924
AID:  1356475501
Posted:  null
Format:  MM dd yyyy
Sep 22, 2012 8:40:17 AM com.io.log.SystemLogger printSevere

SEVERE: Error code:61
ID:  113808924
AID:  1367101375
Posted:  null
Format:  MM dd yyyy
Sep 22, 2012 8:40:17 AM com.io.log.SystemLogger printSevere

SEVERE: Error code:61
ID:  113808924
AID:  1362779158
Posted:  null
Format:  MM dd yyyy
Sep 22, 2012 8:40:21 AM com.io.log.SystemLogger printSevere



我想替换成下面这种形式:(每段的前面几行末尾的\n替换成#,最后一行末尾的\n保留),望各位指点,感激不尽!!!

SEVERE: Error code:61#ID:  113808924#AID:  1356475501#Posted:  null#Format:  MM dd yyyy#Sep 22, 2012 8:40:17 AM com.io.log.SystemLogger printSevere

SEVERE: Error code:61#ID:  113808924#AID:  1367101375#Posted:  null#Format:  MM dd yyyy#Sep 22, 2012 8:40:17 AM com.io.log.SystemLogger printSevere

SEVERE: Error code:61#ID:  113808924#AID:  1362779158#Posted:  null#Format:  MM dd yyyy#Sep 22, 2012 8:40:21 AM com.io.log.SystemLogger printSevere

在线恭候

论坛徽章:
0
2 [报告]
发表于 2012-09-22 17:50 |只看该作者
对不起,是我把问题想复杂了,
只需要先把每行末尾的\n替换成#
然后在“printSevere#” 这一行末尾加一个\n,就可以了,

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
3 [报告]
发表于 2012-09-22 23:38 |只看该作者
try
  1. $ sed ':a;/\n$/!{$!{N;ba}};s/\n/#/g;s/#$/\n/' urfile
复制代码
  1. $ awk -v RS= -F '\n' -v OFS=\# -v ORS='\n\n' '$1=$1' urfile
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP