免费注册 查看新帖 |

Chinaunix

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

[文本处理] [sed正则表达示]替换问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-04 14:35 |只看该作者 |倒序浏览
<strong>Related Words:</strong> <a href="entry://cur">cur</a>, <a href="entry://mongrel">mongrel</a>, <a href="entry://mutt">mutt</a>; <a href="entry://bitch">bitch</a>; <a href="entry://lapdog">lapdog</a>, <a href="entry://pup">pup</a>, <a href="entry://puppy">puppy</a>, <a href="entry://puppy+dog">puppy dog</a>, <a href="entry://whelp">whelp</a>; <a href="entry://bandog">bandog</a>, <a href="entry://bird+dog">bird dog</a>, <a href="entry://coonhound">coonhound</a>, <a href="entry://courser">courser</a>, <a href="entry://gundog">gundog</a>, <a href="entry://hunter">hunter</a>, <a href="entry://sheepdog">sheepdog</a>, <a href="entry://sled+dog">sled dog</a>, <a href="entry://watchdog">watchdog</a>, <a href="entry://wolf+dog">wolf dog</a>, <a href="entry://wolfhound">wolfhound</a>; <a href="entry://guide+dog">guide dog</a>, <a href="entry://police+dog">police dog</a>, <a href="entry://working+dog">working dog</a>

注意:必须保持是一行内容。
如:
entry://guide+dog
把其它中的+,替换为空格
entry://guide dog
但是不能直接替换为+,内容有+存在。这个+两边不一定只是英语或数字...
尝试:
sed 's#entry://\(.*\)+\(.*\)#\1 \2#g'
发现只有
entry://working+dog替换成功?!

论坛徽章:
1
巳蛇
日期:2013-10-28 15:55:33
2 [报告]
发表于 2012-08-04 14:51 来自手机 |只看该作者
本帖最后由 惟吾无为 于 2012-08-04 14:52 编辑

你做的啥词典?
gnu sed4.2.1
sed 's#entry://\(.*\)+\(.*\)">#entry://\1 \2">#g'

论坛徽章:
1
巳蛇
日期:2013-10-28 15:55:33
3 [报告]
发表于 2012-08-04 14:55 来自手机 |只看该作者
原来是webster2012,看来你这也是全局id.

论坛徽章:
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
4 [报告]
发表于 2012-08-04 21:17 |只看该作者
  1. sed 's#entry://\([^"]*\)+\([^"]*\)#\1 \2#g' urfile
复制代码

论坛徽章:
0
5 [报告]
发表于 2012-08-04 22:45 |只看该作者
blackold 发表于 2012-08-04 21:17

多谢黑哥,不什么明白为什是用"?
\([^"]*\) 单一个,不是已经把+也取出了吗?
为什么两个,就自动以+为分割点?

论坛徽章:
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
6 [报告]
发表于 2012-08-05 08:22 |只看该作者
回复 5# peterdocter


    因为正则是贪婪的。

论坛徽章:
0
7 [报告]
发表于 2012-08-05 13:21 |只看该作者
回复 6# blackold

再次多谢黑哥回答,贪婪又有更深一层了解实例:wink:
   

论坛徽章:
0
8 [报告]
发表于 2012-08-06 08:56 |只看该作者
.* 基本通吃,
[^"]* 是以引号为界限
前一种匹配失败的原因是"a+b"xxx"d+e" 可以作为 ("a)+(b"xxx"d+e")  也可以作为("a+b"xxx"d)+(e"),当然也可以作为("a)+(b"x)(xx"d)+(e")
后一种,可以限定在"a+b"引号范围内进行()+()形式的匹配。
以上,个人理解。

论坛徽章:
0
9 [报告]
发表于 2012-08-16 09:40 |只看该作者
回复 8# personball

多谢老兄详细补充
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP