2009-11-07 19:04:03
--------------------------------------------------------------------------------
大家要尊重俺的劳动成果,转载请注明出处。本文首发自http://blog.csdn.net/erazy0/archive/2009/11/06/4777615.aspx
俺的百度空间http://hi.baidu.com/erazy0以及俺的ITPUB博客http://space.itpub.net/22666004/spacelist-blog也会同步更新
欢迎共同学习,交流,本人QQ:398467907 邮箱:zhaizhibin@hotmail.com
欢迎交换友情链接~~
===================================华丽的分割线=========================================
恩,今天继续看了《Linux Shell实例精解》第二章,主要讲的是一些正则表达式(RE, Regular Expression)基础知识。整张都是由一个一个的小例子贯穿起来的,我很喜欢这样的风格。
开始的阅读过程一帆风顺,我随着书一个一个的在我的centOS 4上敲了命令,都一一实现了,可是在读到最后的时候出问题了,问题是这样的。
有一个textfile文本,我 vim textfile 进入之后内容如下:
view plaincopy to clipboardprint?
Unusual occurrences happened at the fair.
Patty won fourth place in the 50 yard dash fair and square.
Occurrences like this are rare.
The winning ticket is 55222
The ticket I got is 54333 and Dee got 55544.
Guy fell down while running around the south bend in his last
event.
~
~
~
Unusual occurrences happened at the fair.
Patty won fourth place in the 50 yard dash fair and square.
Occurrences like this are rare.
The winning ticket is 55222
The ticket I got is 54333 and Dee got 55544.
Guy fell down while running around the south bend in his last
event.
~
~
~
然后直接输入
:1,$s/\([Oo]ccur\)ence/\1rence/g
就出现了错误,如下:
百思不得其解,命令也没有敲错。因为这是一个扩展的RE,难道是我是用的系统不支持?于是在网上找了一本《CentOS系统管理》,翻到正则表达式基础的一章查看,果然,里面并没有关于 \(..\) 元字符的内容,看来是不支持了,多么强大的一个功能呀,我没有想到什么好办法,只能用其它的方法来变通一下。
刚才的这个RE:
:1,$s/\([Oo]ccur\)ence/\1rence/g
其实是实现了这样一个功能:
在全文中搜索 Occurence 或者 occurence, 若果搜到了,就把 occurence 替换成 occurrence (注意多了一个r),把Occurence替换成 Occurrence, 原来首字母的大小写并没有改变。
既然没法使用 \(..\) 元字符,那可以用另外的两条 RE 代替一下:
:1,$s/occurence/occurrence/g
:1,$s/Occurence/Occurrence/g
改完了心里还是有些不痛快,无意中又瞄到了错误提示,嗯??竟然是提示没找到字符串,而不是不支持,真是怪了,因为我练习时是直接拷贝的源码包里的文本,于是我又检查了一遍文本,终于发现问题所在。原来文本本身的 occurrence 已经是拼写正确的了,并没有像书中示例的少了一个r,难怪提示找不到。
汗,都怪我太粗心,也没仔细看清错误,再加上书上也没找到结果,就差点掉阴沟里去了~~
今天又学会了一点——在没搞清楚错误之前,千万不要轻易下结论。还好最后我发现了这个错误,不然这次真是一个天大的乌龙了~~
THAT'S ALL!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22666004/viewspace-618318/ ,如需转载,请注明出处,否则将追究法律责任。