怎么理解这个命令?\(.*\)\.\w这个又是什么意思?来自如下代码
$(obj).depend: $(src)Makefile $(TOPDIR)/config.mk $(SRCS) $(HOSTSRCS)
@rm -f $@@for f in $(SRCS); do \
g=`basename $f | sed -e 's/\(.*\)\.\w/\1.o/'`; \
$(CC) -M $(CPPFLAGS) -MQ $(obj)$g $f >> $@ ; \
done
.*表示任意多个字符; \(.*\)是用来做后向引用的,\1就是它了; \.是一个点 \w用于匹配字母,数字或下划线字符; 作用:把文件扩展名的首个字符替换成o 比如有一个文件叫做test.log,文件名会被替换成test.oog
正则表达式使用详解 http://bbs.chinaunix.net/thread-63273-1-1.html Regular Expression 简介 http://bbs.chinaunix.net/thread-605570-1-1.html Regular Expression POSIX Extension http://bbs.chinaunix.net/viewthread.php?tid=1617693#pid11506403 请教一下,有个疑问,\(.*\) 这段,\)的不是屏蔽掉元字符么?也就是说\(就是匹配(了,那么\(.*\) 应该匹配以 ( 开头并且以 ) 结尾,中间是字符的文件名啊? 明白了,sed默认不支持扩展的正则表达式,所以()不是元字符。加上-r选项才支持扩展正则 |