Sed 如何将bash脚本与makefile中的\n(新行)一起使用
我编写了一个代码,其中有几个选项可以在Sed 如何将bash脚本与makefile中的\n(新行)一起使用,sed,makefile,compilation,Sed,Makefile,Compilation,我编写了一个代码,其中有几个选项可以在.h文件(define.h)中激活。我希望我的代码的编译版本生成一个文件(例如define.dat),并在执行时将定义的部分写入其中(以跟踪我们使用了什么或没有使用什么) 到目前为止,我设法制作了一个sed脚本,将文件转换为我想要呈现的格式 echo '"' `cat define.h | grep '#def' | grep -v '//#def' | sed 's;/.*$$;;' | sed 's/$$/ \\\n/'` '"' > define
.h
文件(define.h)中激活。我希望我的代码的编译版本生成一个文件(例如define.dat),并在执行时将定义的部分写入其中(以跟踪我们使用了什么或没有使用什么)
到目前为止,我设法制作了一个sed
脚本,将文件转换为我想要呈现的格式
echo '"' `cat define.h | grep '#def' | grep -v '//#def' | sed 's;/.*$$;;' | sed 's/$$/ \\\n/'` '"' > define.dat
这是我从中学到的
const char *s = {
#include "define.dat"
};
我可以在编译时在代码中实现它
第一个脚本在Bash环境中运行良好(请注意,double$
不是必需的),但是,当我将其放入makefile(需要double$
)时,\n
被解释为换行符。因此,编译器会给出错误
有什么建议或新方法吗?我找到了一个小的解决办法,但并不满意。我使用
-
作为分隔符
echo '"' `cat define.h | grep '#def' | grep -v '//#def' | sed 's;/.*$$;;' | sed 's/$$/ - /'` '"' > define.dat
而不是
const char *s = {
#include "define.dat"
};
我曾经
char s[] = {
#include "define.dat"
};
for (i=0 ; s[i] ; i++)
if (s[i] == '-')
s[i] = '\n';
if ((fout = fopen("define.dat","w")) == NULL)
fprintf(stderr,"Error in creating define.dat\n");
else
{
fprintf(fout,s);
fclose(fout);
}
要用
\n
替换所有-
,我找到了一个小的解决方法,但是,我并不满意。我使用-
作为分隔符
echo '"' `cat define.h | grep '#def' | grep -v '//#def' | sed 's;/.*$$;;' | sed 's/$$/ - /'` '"' > define.dat
而不是
const char *s = {
#include "define.dat"
};
我曾经
char s[] = {
#include "define.dat"
};
for (i=0 ; s[i] ; i++)
if (s[i] == '-')
s[i] = '\n';
if ((fout = fopen("define.dat","w")) == NULL)
fprintf(stderr,"Error in creating define.dat\n");
else
{
fprintf(fout,s);
fclose(fout);
}
要将所有的
-
替换为\n
MCVE,请:和更多信息()cat | grep | grep | sed | sed | sed
是七宗罪之一。MCVE:和更多信息()cat | grep | sed | sed | sed
是七宗罪之一。