这两天在做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很多
1 | char * get_file_name( char *path_file_name){ |
2 | char *re = 0; |
3 | char *p = path_file_name; |
4 | while (*p){ |
5 | if (*p == '/' ) re = p+1; |
6 | p++; |
7 | } |
8 | return (re) ? re : path_file_name; |
9 | } |