http://topic.csdn.net/u/20100114/18/f6a22d18-7aa1-439b-a0b7-11cbd41d76e9.html
csdn CSDN社区-Linux/Unix社区-系统维护与使用区
测试文件 yutest 里面有一行两组数字 “12 34”
下面是命令和测试的结果
sed 's//([0-9]./)/aa/1/' yutest
aa12 34
sed 's//([0-9]/)/([0-9]/)//2/1/' yutest
21 34
sed 's//([0-9]./)/([0-9]./)//2 /1/' yutest
134 2
sed 's//([0-9]./)/([0-9]./)//1aa/1/' yutest
12 aa2
从以上分析看出在匹配模式是/([0-9]./)/([0-9]./)/的时候 /([0-9]./)匹配后的结果是
“2 ”
解答:
在匹配模式是/([0-9]./)/([0-9]./)/的时候,第一个/([0-9]./)匹配到的是“2空格”,第二个匹配到的是“34”。原文中的“1是匹配不到的”,所以最后两个会输出那样的结果。
过程如下:要匹配([0-9]./)/([0-9]./),需要匹配四个字符。第一个字符在"[0-9]"范围内,第二个字符任意,第三个字符也是在"[0-9]"范围内,第四个字符任意。
所以开始匹配“12空格3”的第三个字符(空格)不符合"[0-9]"范围内。
于是匹配“2空格34”全部符合,所以:第一个([0-9]./)匹配到的就是“2空格”,第二个([0-9]./)匹配到的就是“34”了。