免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2113 | 回复: 9

请教:怎样有条件的替换行。 [复制链接]

论坛徽章:
0
发表于 2009-08-11 15:08 |显示全部楼层
比如有一个文本。
替换掉包含aa 或者 bb的行为123
替换掉包含cc 并且 dd的行为456
例子将
123abcd
aa456
cca
ccasdfdd
变为
123abcd
123
cca
456

论坛徽章:
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
发表于 2009-08-11 15:13 |显示全部楼层

回复 #1 skyning 的帖子

sed,awk

论坛徽章:
0
发表于 2009-08-11 15:17 |显示全部楼层

回复 #1 skyning 的帖子

sed  's/.*aa.*/123/g;s/.*dd.*/456/g'

论坛徽章:
0
发表于 2009-08-11 15:20 |显示全部楼层
aabbccdd
这种怎么替换?

论坛徽章:
0
发表于 2009-08-11 15:23 |显示全部楼层
不考虑上面这种情况的,aabbccdd会被替换为456:

  1. awk '/aa|bb/{$0=123}/cc/&&/dd/{$0=456}1' URFILE
复制代码

论坛徽章:
0
发表于 2009-08-11 15:26 |显示全部楼层
谢谢各位回答。尤其是wtuter  

另外,还想请教一下。
如果匹配了一行,向替换成多行,怎么办啊?
比如上面的。
替换掉包含aa 或者 bb的行为
123
mm
替换掉包含cc 并且 dd的行为
456
kk
例子将
123abcd
aa456
cca
ccasdfdd
变为
123abcd
123
mm
cca
456
kk

论坛徽章:
0
发表于 2009-08-11 15:28 |显示全部楼层

回复 #6 skyning 的帖子

加\n呗~

  1. awk '/aa|bb/{$0="123\nmm"}/cc/&&/dd/{$0="456\nkk"}1' URFILE
复制代码

论坛徽章:
0
发表于 2009-08-11 15:32 |显示全部楼层

回复 #6 skyning 的帖子

[\2]sed -r 's/.*(aa|bb).*/123\nmm/g;s/.*cc.*dd.*/456\nkk/g' 1
123abcd
123
mm
cca
456
kk

论坛徽章:
0
发表于 2009-08-11 15:35 |显示全部楼层
这样就行啊,你真牛!!

看来我要认真学一下awk了。


原帖由 kwokcn 于 2009-8-11 15:28 发表
加\n呗~

awk '/aa|bb/{$0="123\nmm"}/cc/&&/dd/{$0="456\nkk"}1' URFILE

论坛徽章:
0
发表于 2009-08-11 15:36 |显示全部楼层
非常感谢,
sed刚看了几天,还不熟,多谢了。

原帖由 wtuter 于 2009-8-11 15:32 发表
[\2]sed -r 's/.*(aa|bb).*/123\nmm/g;s/.*cc.*dd.*/456\nkk/g' 1
123abcd
123
mm
cca
456
kk
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP