查找两个字符串之间的内容并删除换行符
时间:2011-06-15
来源:互联网
请教一个问题
有一个文本a.txt
内容如下
3.230: [full gc (system)3.230: [cms : ok->3729k(1310720k),0.0657070 secs】75511k->3729k(1939904k),[cms perm : 13040k->13029k(307200k)],0.0657790 secs] [times: user=0.07 sys=0.01,real=0.07 secs]
12.745:[gc 8.675: [parnew: 471936->21331k(629184k),0.035690 secs] [times: user=0.07 sys=0.01,real=0.07 secs]
12.745:[gc 8.675: [parnew: 471936->21331k(629184k),0.035690 secs] [times: user=0.07 sys=0.01,real=0.07 secs]
12.745:[gc 8.675: [parnew: 471936->21331k(629184k),0.035690 secs] [times: user=0.07 sys=0.01,real=0.07 secs]
........
3.230: [full gc (system)3.230: [cms : ok->3729k(1310720k),0.0657070 secs】75511k->3729k(1939904k),[cms perm : 13040k->13029k(307200k)],0.0657790 secs] [times: user=0.07 sys=0.01,real=0.07 secs]
12.745:[gc 8.675: [parnew: 471936->21331k(629184k),0.035690 secs] [times: user=0.07 sys=0.01,real=0.07 secs]
12.745:[gc 8.675: [parnew: 471936->21331k(629184k),0.035690 secs] [times: user=0.07 sys=0.01,real=0.07 secs]
...........
3.230: [full gc (system)3.230: [cms : ok->3729k(1310720k),0.0657070 secs】75511k->3729k(1939904k),[cms perm : 13040k->13029k(307200k)],0.0657790 secs] [times: user=0.07 sys=0.01,real=0.07 secs]
3.230: [full gc (system)3.230: [cms : ok->3729k(1310720k),0.0657070 secs】75511k->3729k(1939904k),[cms perm : 13040k->13029k(307200k)],0.0657790 secs] [times: user=0.07 sys=0.01,real=0.07 secs]
如何能将上面文本按[full gc为关键字搜索 找到这行以后. 把两个[full gc之间的内容的换行符删除.
也就是以[full gc为关键合并行.一行保证只有一个[full gc
多谢了
作者: rishairu 发布时间: 2011-06-15
作者: rishairu 发布时间: 2011-06-15
- awk '/\[full gc/{print ""}{printf $0}' urfile
作者: ly5066113 发布时间: 2011-06-15
作者: rishairu 发布时间: 2011-06-15
- sed -e '/\[full gc/{
- :a
- $!N
- /.*\n.*\[full gc.*/!{
- s/\n//g
- ta
- }
- P
- D
- }' file
作者: liion631818 发布时间: 2011-06-15
原来是这样,怎么我就只想到一个sed呢,复杂了。。

作者: liion631818 发布时间: 2011-06-15
N 前面不加 $! 会有问题的。
作者: ly5066113 发布时间: 2011-06-15
能给兄弟讲解一下么
作者: rishairu 发布时间: 2011-06-15
是哦,full gc出现在最后一行就出问题了。我改下
作者: liion631818 发布时间: 2011-06-15
大概讲下吧,最好你去看看sed & awk这本书
- sed -e '/\[full gc/{
- :a
- $!N #当匹配到full gc的时候就读取下一行放进pattern space,2行之间会以\n分割
- /.*\n.*\[full gc.*/!{
- s/\n//g # 把2个full gc之间的\n都替换为空,\n是有N读取下一行的时候sed自动加入的,作为2行的分隔符
- ta #循环,直到出现第二个full gc
- }
- P # 打印pattern space中的第一行
- D #删除pattern space的第一行
- }' file
作者: liion631818 发布时间: 2011-06-15
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28