上来抱怨一句,SED也是老夫子

中山野鬼 发布于 2012/04/07 22:59
阅读 174
收藏 3

这两天在做linux C 编程和make方法 第7部分,补充的Makefile的自动化脚本。用脚本检查Makefile文件的模块名和C文件信息,然后调用gcc -MM生成依赖信息,再写回Makefiile,以方便大家可以直接通过Makefile的自动生成部分,检测模块内文件的依赖是否完整。

基本上就用sed了,即便是sed也已经让我转来转去。发现sed也是一个目标N种方法。

例如为了从路径名中获取文件名。

从A/B/C/D/E/F,获取F,

以前这种变态的事情都是用C做的。现在用SED,发现也有N种方法。

目前暂时用

MODULE_SRC=`echo $MODULE_PATH|sed -n "s/^.*[^\/]//"`的方式。

就是把MODULE_PATH的内容传递到后面给sed操作,用``将数据转给MODULE_SRC。

^.*是查找从起始开始,任意字符任意数量,而 [^\/]是同时必须要有个 ‘/’字符。

然后把符合上面条件的全部删除掉,余下的给了MODULE_SRC。

网上没查到资料。这个方法是最后才试出来的。前面用了其他几种方法也行。

脚本语言真TMD悲摧,又要符合人的思维描述,又想高效实现。我发现我的思维还是比较贴近计算机本身或者做市场或商务的人群,而不是卡在中间的脚本。如果是C做,就EASY很多


char * get_file_name(char *path_file_name){
    char *re = 0;
    char *p = path_file_name;
    while (*p){
        if (*p == '/') re = p+1;
        p++;
    }
    return (re) ? re : path_file_name;
}

加载中
0
Z
ZYud
basename "path/to/file"
中山野鬼
中山野鬼
恩。这样也行。不过统一用sed,省得我多解释了。所以无聊啊。
ddatsh
ddatsh
返回顶部
顶部