2010-04-26 5 views
0

Comment pouvez-vous ajouter à la fin d'une ligne par SED contrôlé par makefile?Remplacement de la fin de la ligne par SED dans le fichier makefile

Je cours

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

où le problème est dans l'utilisation de la marque $ pour la fin de la ligne.

-je obtenir

#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 

J'ai la commande juste après le « tous: » tag dans mon makefile qui ne contient que les deux lignes.

Les paramètres -n et -e n'aident pas ici. La commande fonctionne comme prévu lorsqu'elle est exécutée directement dans le terminal.

+0

Pouvez-vous ajouter des exemples d'entrées et vos sorties attendues? – IanNorton

Répondre

4

Le caractère $ est un caractère spécial dans Makefile. Pour obtenir un littéral $ dans une commande, vous devez le citer en le préfixant avec un autre: $$. Pour plus d'informations, voir 6.1 Basics of Variable References dans le manuel de fabrication GNU.

0

Il vous manque le "/" final de la dernière commande sed.

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

cela fonctionne bien pour moi sur linux, mais cela ne contient pas le $ carboniser votre problème mentionne

Questions connexes