2010/6/17 listofx <[email protected]>: > xi...@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) > > xi...@xiang-laptop:~/tmp$ cat a |sed 's/(.*)//g' > python-gtk2-dev > > xi...@xiang-laptop:~/tmp$ cat a |sed 's/.*//g' > > > xi...@xiang-laptop:~/tmp$ cat a |sed 's/\(.*\)//g' > > > xi...@xiang-laptop:~/tmp$ > 谁能告诉我后面三个怎么理解。我的理解是 > 1. cat a |sed 's/(.*)//g' 单引号屏蔽了shell对里面任何字符的解释,结果就 > 是sed接收到s/(.*)//g的请求,我认为()在这里会被认为是括号,由sed解释, > 但是从上面的结果看,我的理解是错误的。 >
您的理解没错,这种结果的出现是因为 * 会尽可能多地匹配,所以导致从第一 个 ( 到最后一个 ) 全都被替换成了空串。 > 2. 第二个不解释 > > 3. 从关于1的解释,其实sed 's/\(.*\)//g'的写法才是我想要的,因为我理解 > shell将s/\(.*\)//g传给sed,sed自己在将转义字符\进行解释,结果就是查找以 > 括号开始的一段文本(同时,以括号结束)。 > 可以试试 s/([^)]*)//g。 ji...@jimmy:/tmp$ cat a |sed 's/([^)]*)//g' python-gtk2-dev , libgladeui-1-9 , python-gtk2-doc -- Jimmy Xu -- ubuntu-zh mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh
