Chinaunix

标题: 请教字符串替换 [打印本页]

作者: mymmsc    时间: 2006-04-23 14:09
标题: 请教字符串替换
在autoscan一个目录时,会产生一个configure.scan文件,能否把下面的一行:
AC_CONFIG_SRCDIR([misc/errorcodes.c])
改为:
AC_CONFIG_SRCDIR([hello.c])
作者: mymmsc    时间: 2006-04-23 14:35
自己再顶一下。
作者: xxjoyjn    时间: 2006-04-23 14:40
原帖由 mymmsc 于 2006-4-23 14:09 发表
在autoscan一个目录时,会产生一个configure.scan文件,能否把下面的一行:
AC_CONFIG_SRCDIR([misc/errorcodes.c])
改为:
AC_CONFIG_SRCDIR([hello.c])


$ sed 's/\(AC_CONFIG_SRCDIR\).*\/.*/\1\(\[hello.c\]\)/g' configure.scan

[ 本帖最后由 xxjoyjn 于 2006-4-23 14:50 编辑 ]
作者: mymmsc    时间: 2006-04-23 16:02
厉害,正确!
再请问,能不能只对“[(。。。。)]”里面进行匹配?
作者: xxjoyjn    时间: 2006-04-23 16:05
你说具体点好吗
作者: xxjoyjn    时间: 2006-04-23 16:13
原帖由 mymmsc 于 2006-4-23 14:09 发表
在autoscan一个目录时,会产生一个configure.scan文件,能否把下面的一行:
AC_CONFIG_SRCDIR([misc/errorcodes.c])
改为:
AC_CONFIG_SRCDIR([hello.c])


我明白你的意思了
你可以这样干:

$ sed 's/misc\/errorcodes\.c/hello\.c/g' configure.scan

[ 本帖最后由 xxjoyjn 于 2006-4-23 16:16 编辑 ]
作者: mymmsc    时间: 2006-04-23 17:07
不是的,因为autoscan的特点,()里面的路径可能长,也可能短,我的意思是不管()里面是什么,全部替换。
作者: mymmsc    时间: 2006-04-23 17:09
完整的表达,应该是文件里面,肯定有一行是:
AC_CONFIG_SRCDIR([XXXXXXXX]),XXXXXX为任意路径
改为:
AC_CONFIG_SRCDIR([hello.c])
作者: xxjoyjn    时间: 2006-04-23 17:50
原帖由 mymmsc 于 2006-4-23 14:09 发表
在autoscan一个目录时,会产生一个configure.scan文件,能否把下面的一行:
AC_CONFIG_SRCDIR([misc/errorcodes.c])
改为:
AC_CONFIG_SRCDIR([hello.c])



那就这样啦

$  sed 's/\[.*\/.*\]/\[hello\.c\]/g'  configure.scan

[ 本帖最后由 xxjoyjn 于 2006-4-23 17:52 编辑 ]
作者: mymmsc    时间: 2006-04-23 18:36
有问题,如果里面是当前路径的,没有/怎么办?
AC_CONFIG_SRCDIR([misc/errorcodes.c])是一个,其它的[()]还有,比如
AC_CONFIG_HEADER([config.h]),不能把这个业替换了。
作者: mymmsc    时间: 2006-04-23 18:39
我知道了一部分,避免把其它的([])也替换掉,把前面的信息也放进来。
但是可能路径可能是misc/errorcodes.c,也可能是misc/a/errorcodes.c,也可能是misc/a/b/errorcodes.c怎么处理?
作者: mymmsc    时间: 2006-04-23 18:40
路径也可能只有文件名,比如errorcodes.c
作者: xxjoyjn    时间: 2006-04-23 18:47
原帖由 mymmsc 于 2006-4-23 18:36 发表
有问题,如果里面是当前路径的,没有/怎么办?
AC_CONFIG_SRCDIR([misc/errorcodes.c])是一个,其它的[()]还有,比如
AC_CONFIG_HEADER([config.h]),不能把这个业替换了。



$ sed 's/\(AC_CONFIG_SRCDIR\)([.*\.c])/\1([hello.c])/g' configure.scan
作者: xxjoyjn    时间: 2006-04-23 19:05
上面那个有问题,这个是可以的,我测试过
$ sed 's/\(AC_CONFIG_SRCDIR\)...*\.c../\1([hello.c])/g' configure.scan
作者: mymmsc    时间: 2006-04-23 19:37
果然正确,thanks!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2