[求助]用命令实现一个简单的#include预处理程序
-
- 帖子: 198
- 注册时间: 2008-02-05 20:26
[求助]用命令实现一个简单的#include预处理程序
查找文件中类似#include "xxxx"的行,将这一行删掉,并将文件xxxx的内容插入此处,请问如何实现?
尽量不使用shell本身的功能,而只使用命令程序的功能。
尽量不使用shell本身的功能,而只使用命令程序的功能。
- jarlyyn
- 帖子: 4671
- 注册时间: 2006-04-12 18:54
- 联系:
-
- 帖子: 198
- 注册时间: 2008-02-05 20:26
Re: [求助]用命令实现一个简单的#include预处理程序
谢谢楼上!
这样虽然可以实现,但使用变量就用到了shell本身的功能。
因为具体事情的关系,我必须在win下做。而cygwin的bash打开很慢,所以想在cmd下用cygwin里面的那些unix命令来完成,所以不想用到bash和cmd的任何功能,只用命令本身的功能。
这样虽然可以实现,但使用变量就用到了shell本身的功能。
因为具体事情的关系,我必须在win下做。而cygwin的bash打开很慢,所以想在cmd下用cygwin里面的那些unix命令来完成,所以不想用到bash和cmd的任何功能,只用命令本身的功能。
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: [求助]用命令实现一个简单的#include预处理程序
sed检察类似#include "xxxx"的行,将文件xxxx的名提取出来,利用文件名动态创建读取内容的sed指令,写入一个临时文件,然后sed -f 运行临时文件,加入文件内容后,再用sed删除所有类似#include "xxxx"的行。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
- adam8157
- 帖子: 2794
- 注册时间: 2009-03-05 16:31
- 联系:
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
Re: [求助]用命令实现一个简单的#include预处理程序
cygwin,也不是不支持shell的特性。
如果那么限定只能使用程序,你可以使用awk脚本。那就只要一个awk,语法有些类似C
如果那么限定只能使用程序,你可以使用awk脚本。那就只要一个awk,语法有些类似C
● 鸣学
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: [求助]用命令实现一个简单的#include预处理程序
突然想到头文件里也有#include,此法不行,修改了思路,测试通过:fnan 写了:sed检察类似#include "xxxx"的行,将文件xxxx的名提取出来,利用文件名动态创建读取内容的sed指令,写入一个临时文件,然后sed -f 运行临时文件,加入文件内容后,再用sed删除所有类似#include "xxxx"的行。
kose3@kose3-desktop:~$ cat c.c
# include "stdio.h"
# include "time.h"
main()
...
kose3@kose3-desktop:~$ sed -i -e 's|^\s*#\s*include\s*"\(.*\)"\s*$|/seddeletesed.\1/r /usr/include/\1|w tmp.sed' -e 's|\(/seddeletesed.*/\)r /usr/include/.*|\1|' c.c;sed -i -f tmp.sed c.c;sed -i '/^\/seddeletesed.*h\/$/d' c.c
kose3@kose3-desktop:~$ grep '/seddelete.*/' c.c
kose3@kose3-desktop:~$ grep '\s*#\s*include.*' c.c
# include <features.h>
# include <stddef.h>
# include <bits/types.h>
#include <libio.h>
# include <stdarg.h>
#include <bits/stdio_lim.h>
#include <bits/sys_errlist.h>
# include <getopt.h>
# include <bits/stdio.h>
# include <bits/stdio2.h>
# include <bits/stdio-ldbl.h>
# include <features.h>
# include <stddef.h>
# include <bits/time.h>
# include <bits/types.h>
# include <bits/types.h>
# include <bits/types.h>
# include <bits/types.h>
# include <bits/types.h> /* This defines __time_t for us. */
# include <xlocale.h>
kose3@kose3-desktop:~$ cat c.c
..............................
__END_DECLS
#endif /* <time.h> included. */
#endif /* <time.h> not already included. */
main()
...
kose3@kose3-desktop:~$
(不知道那种情况下用什么删除tmp.sed临时文件,没加上)
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
- lexdene
- 帖子: 434
- 注册时间: 2010-02-21 16:19
- 来自: 大连
- 联系:
Re: [求助]用命令实现一个简单的#include预处理程序
这个很难。
大连Linux User Group: http://groups.google.com/group/dalian-lug?hl=zh-CN
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
- cjxgm
- 帖子: 1952
- 注册时间: 2010-04-23 20:40
- 系统: Arch Linux
- 来自: 浙江·杭州
- 联系:
Re: [求助]用命令实现一个简单的#include预处理程序
代码: 全选
cpp a.c

-
- 帖子: 6548
- 注册时间: 2008-10-31 22:12
- 系统: 践兔
- 联系:
-
- 帖子: 198
- 注册时间: 2008-02-05 20:26
Re: [求助]用命令实现一个简单的#include预处理程序
我的意思当然不是用cpp。。。
楼上的解答都好厉害,感谢大家啊~
嗯,我还要继续好好学习shell~
楼上的解答都好厉害,感谢大家啊~
嗯,我还要继续好好学习shell~