免费注册 查看新帖 |

Chinaunix

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

sed的一个问题,请达人帮忙解答一下 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-24 21:36 |只看该作者 |倒序浏览
sed  "s/bc*./Z/"  
文本是aaabbbcccddd
        aaaabcsssss
        aaaaabc
        aabbss
得出的结果为什么第一行只把a后面的b置换了啊?

论坛徽章:
0
2 [报告]
发表于 2007-04-24 21:57 |只看该作者
自己先顶一个,高手请指教

论坛徽章:
0
3 [报告]
发表于 2007-04-24 22:03 |只看该作者
说说你要实现什么 不太明白你的意思

论坛徽章:
0
4 [报告]
发表于 2007-04-24 22:14 |只看该作者
pengcy&Petrochina [/home/pengcy/Shell/sed]
#cat test
aaabbbcccddd
aaaabcsssss
aaaaabc
aabbss

pengcy&Petrochina [/home/pengcy/Shell/sed]
#cat test |sed "s/bc*./Z/"
aaaZbcccddd
aaaaZssss
aaaaaZ
aaZss

楼主可能是需要解释一下这里怎么做的替换,同问!!!

PS:
GNU bash, version 3.1.17(1)-release (i686-redhat-linux-gnu)
GNU sed version 4.1.5

论坛徽章:
0
5 [报告]
发表于 2007-04-24 22:15 |只看该作者
这里的替换怎么是替换的最小匹配部分?

论坛徽章:
0
6 [报告]
发表于 2007-04-24 22:24 |只看该作者
对的,为什么结果是aaaZbcccddd,原来aaabbbcccddd中的两个bb怎么就被替换了啊,请达人指教sed "s/bc*./Z"与sed "s/bc.*/Z/"的不同之处

论坛徽章:
0
7 [报告]
发表于 2007-04-24 22:34 |只看该作者
4楼的知道不?

论坛徽章:
0
8 [报告]
发表于 2007-04-24 22:41 |只看该作者
bc*.        *号表示匹配前面的字符0次到多次 如果0次 表达式就变成了 b.  显然可以匹配 bb 了

bc.*        表示.这个任意字符重复0次到多次

论坛徽章:
0
9 [报告]
发表于 2007-04-24 22:45 |只看该作者
原帖由 davistar 于 2007-4-24 22:41 发表
bc*.        *号表示匹配前面的字符0次到多次 如果0次 表达式就变成了 b.  显然可以匹配 bb 了

bc.*        表示.这个任意字符重复0次到多次


这个我明白的,只是不知道在sed中,怎么替换的时候貌似是遵循的最小匹配规则?

或者我表述不清楚,很明显例子中间把b或者bb这样的部分替换成Z了.

论坛徽章:
0
10 [报告]
发表于 2007-04-24 22:51 |只看该作者
s默认命令替换第一次匹配到的字符串. 当然这个结果
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP