LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1138|回复: 3

求助-->关于sed中regexp匹配问题!

[复制链接]
发表于 2011-9-11 00:45:27 | 显示全部楼层 |阅读模式
文件内容为:
a 1
a 1
b 2
b 2
b 2
c 3
c 3
c 3

---------------------------------------------
第一种匹配方式:sed -n 'N;/^\(.*\)\n\1$/p' ,结果是:
a 1
a 1
b 2
b 2
c 3
c 3

第二钟匹配方式:sed -n 'N;/\(.*\)\n\1/p' ,结果是:
a 1
a 1
b 2
b 2
b 2
c 3
c 3
c 3

请各位大侠赐教,为什么这两种匹配方式不一样?
普通的整行匹配与添加了前导^、后置$的整行匹配有什么区别?
 楼主| 发表于 2011-9-13 18:40:46 | 显示全部楼层
求指点!!!
回复 支持 反对

使用道具 举报

发表于 2011-9-13 19:33:49 | 显示全部楼层
全匹配和部分匹配不一样不是很正常吗?比如
“abc”可以被“b”匹配,但显然不能被“^b$"匹配。又或者
“abbbc”可以被“b”匹配,也可以被“b?”,"b*","b+"匹配,但显然不能被"^b+$匹配。
回到你的问题,全行匹配就要精确匹配“有且只有连续两行内容相同”,而普通匹配只要求连续两行内容相同。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-9-16 16:26:09 | 显示全部楼层
3Q!  想明白了,原来是被sed的多行模式搞晕了!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表