[Ubuntu-zh] 脚本问题(小问题)

Jimmy Xu xu.jimmy.wrk在gmail.com
星期四 六月 17 13:35:11 BST 2010


2010/6/17 listofx <listofx在gmail.com>:
> 虽然邮件有点长,我觉得还是保留上面的内容接着写。我有两个疑问:
> 疑问一:
> 你最后的答复我能看明白,不过,不是说还有一种叫做懒惰匹配,也就是不将匹配
> 最大化,如果不熟悉,请看
> http://deerchao.net/tutorials/regex/regex.htm#greedyandlazy
>
> xiang在xiang-laptop:~/tmp$ cat a
> python-gtk2-dev (2.17.0-0ubuntu2), libgladeui-1-9 (3.7.0.is.3.6.7-0ubuntu1), python-gtk2-doc (2.17.0-0ubuntu2)
> xiang在xiang-laptop:~/tmp$ cat a | sed 's/(.*?)//g'
> python-gtk2-dev (2.17.0-0ubuntu2), libgladeui-1-9 (3.7.0.is.3.6.7-0ubuntu1), python-gtk2-doc (2.17.0-0ubuntu2)
>
> 从结果可见,没有达到想要的效果
>

sed 不支持这种修饰符,当然您如果想用 Perl 的话这样最好。

> 疑问二:
> 不理解cat a |sed 's/(.*)//g'为什么会匹配括号,因为按照我先前的解释,最终是将(.*)这样的正则表达式给了sed,而(在正则表达式中有其特殊含义,如果想要
> 匹配(,正确的正则表达式是\(.*\),不是吗?
>

sed 会将不加转义的括号当成普通字符,\( \)会被当成分组括号。

jimmy在jimmy:~$ echo Aa | sed 's/\(A\)/[\1]/g'
[A]a

--
Jimmy Xu


关于邮件列表 ubuntu-zh 的更多信息