我想解析一个文件并将每一行用#ifndef
和括起来#endif
。
例如,从以下内容开始:
#define X 1
#define Y 2
#define Z 3
我想生成:
#ifndef X
#define X 1
#endif
#ifndef Y
#define Y 2
#endif
#ifndef Z
#define Z 3
#end if
该awk
脚本在控制台中工作,但在内部不起作用make
:
awk '{printf "#ifndef %s\n%s %s %s\n#endif\n", $2, $1, $2, $3}' globals.tmp > globals.h
当在 内部运行时make
,输出如下:
awk: cmd. line:1: {printf "#ifndef %s\n%s %s %s\n#endif\n", , , , }
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: {printf "#ifndef %s\n%s %s %s\n#endif\n", , , , }
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: {printf "#ifndef %s\n%s %s %s\n#endif\n", , , , }
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: {printf "#ifndef %s\n%s %s %s\n#endif\n", , , , }
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: {printf "#ifndef %s\n%s %s %s\n#endif\n", , , , }
awk: cmd. line:1: ^ unexpected newline or end of string
所以它显然没有拉动田地。我尝试使用$1
、$2
和$3
:添加单反斜杠、双反斜杠和三反斜杠,更改引号等,但没有任何效果。我知道awk
并且make
可能很古怪,想知道是否有一些我没有得到的“陷阱”?