2010-04-26 286 views
0

如何通过由makefile控制的SED追加到行尾?在makefile中用SED替换行结尾

我跑

paste -d" " t.tex tE.tex | sed '[email protected][email protected]@' > tM.tex 

是哪里的问题,在使用该商标$为行的末尾。

我得到

#paste -d" " t.tex tE.tex | sed -e s/" "/\\\&/g | sed -r "s/XXX/" > tM.tex 
sed: -e expression #1, char 10: unterminated `s' command 
make: *** [all] Error 1 

我的命令只是“所有”之后我的makefile文件只包含两行标签。

参数-n-e在这里没有帮助。 该命令在终端直接运行时按预期运行。

+0

您可以添加一些示例输入和您的预期输出吗? – IanNorton 2010-04-26 13:31:25

回答

4

$字符是在Makefile中一个特殊字符。要在命令中得到一个字面值$,您需要在前面加上另一个前缀来引用它:$$。有关更多信息,请参见GNU make手册中的6.1 Basics of Variable References

0

您错过了最后一个sed命令的最后一个“/”。

paste -d" " t.tex tE.tex | sed s/" "/\\\&/g | sed -r "s/XXX//" > tM.tex 

这个工作正常,我在Linux上,但是这不包含$烧焦你的问题中提到