sed 的简单问题, sed初学, 脚本高手进。先谢了
想要实现把c程序中的指定的一句前插入我的一句话
下面是我的实验结果:
-------------------------------------------------------------------------------------------------------------
[root@localhost main]# cat main.c
#include <stdio.h>
int foo(int arg)
{
return 0;
}
int main (int argc, char ** argv)
{
int value = -1;
char cvalue[2] = {0};
printf("\nargv1 is %c\n",argv[1][0]);
// printf("\nargv1 is %s\n",*(argv+1));
printf("\nargv1 is %c\n",**(argv+1));
printf("\nargv1 is %s\n",**(argv+2));
printf("\nargv1 is %c\n",**(argv+3));
//printf("\nargv1 is %c\n",**(argv+4));
printf("\nargv1 is %d\n",(int)argv[1]);
return 0;
}
[root@localhost main]# sed -n -e '/main[[:space:]]*(/,/^}/p' main.c | sed -e 's/return[[:space:]]*/mycode; \n return /'
int main (int argc, char ** argv)
{
int value = -1;
char cvalue[2] = {0};
printf("\nargv1 is %c\n",argv[1][0]);
// printf("\nargv1 is %s\n",*(argv+1));
printf("\nargv1 is %c\n",**(argv+1));
printf("\nargv1 is %s\n",**(argv+2));
printf("\nargv1 is %c\n",**(argv+3));
//printf("\nargv1 is %c\n",**(argv+4));
printf("\nargv1 is %d\n",(int)argv[1]);
mycode;
return 0;
}
[root@localhost main]#
-------------------------------------------------------------------------------------------------------------
这是我的命令:
sed -n -e '/main[[:space:]]*(/,/^}/p' main.c | sed -e 's/return[[:space:]]*/mycode; \n return /'
真正的目的是把main.c中的return 0; 前面插入一个mycode;要求直接写到main.c中,我现在的问题是如何把我前面sed的匹配直接和后面sed的替换联系起来在一个sed中完成?
如果有其他方法可以实现我的要求也行,大家指点。