2010-10-30 27 views
1

J'ai besoin de convertir tous les chemins avec '\' en '/'. Le fichier makefile est assez long et il est impossible de le faire manuellement.Façon simple de convertir des barres obliques dans un Makefile?

Existe-t-il un moyen de les convertir rapidement? Gardez à l'esprit qu'un remplacement global n'est pas possible car '\' est également utilisé pour indiquer qu'une commande est poursuivie sur la ligne suivante.

+0

Pouvez-vous utiliser la commande unix? 'sed -i 's/\\/\ // g' votre fichier ' –

+0

@Vincent: Bien sûr. –

+0

J'ai tellement "regex" en lisant ceci. Ils sont souvent mal utilisés, mais quand ils sont appropriés, vous devez les aimer. – delnan

Répondre

5

Il semble que vous pouvez le faire avec une commande sed:

sed -e 's/\\\(.\)/\/\1/g' 

Cela convertit tout antislash suivi d'un autre caractère (qui ne comprend pas de saut de ligne) dans une barre oblique suivie par ce même caractère.

Cette ligne de commande a un peu un problème de "cure-dent penchée", désolé à ce sujet.

+0

Pas de problème - semble avoir fonctionné. –

+1

Vous n'avez pas besoin d'utiliser '/' comme séparateur de commandes. Cela semblerait un peu plus agréable comme 'sed -e 's: \\\ (. \):/\ 1: g'. –

+0

@Jack Kelly: C'est vrai, mais 'sed' nécessite toujours que vous citez les parenthèses (sinon, il essaie de les faire correspondre littéralement). –

0

Je pense que la solution Gregs était presque correct, mais je le ferais

sed -e 's/\\\(.\)/\/\1/g' 

pour faire en sorte que non seulement la première barre oblique sera remplacé. Désolé de ne pas le faire comme commentaire, mais je n'ai pas encore le privilège.