2010-02-12 8 views
1

Oui, c'est une question vraiment paresseuse mais je me dis que c'est un problème que les gens ont souvent assez que quelqu'un ici aurait quelque chose déjà écrit à partager.À quoi ressemblerait un script à remplacer par/avec de nombreux fichiers?

J'ai une tonne de fichiers C avec des instructions #include utilisant des chemins relatifs Windows. Je travaille sur la compilation du code sur d'autres systèmes d'exploitation (immédiatement, sur ma machine de développement OS X) et j'ai besoin de remplacer toutes les barres obliques inversées par des barres obliques dans ces instructions include. Ainsi, de quelque chose comme #include "libs\helper.h" à #include "libs/helper.h".

+0

On dirait un emploi pour un regex 5 caractères. En supposant que vous n'utilisez pas de barres obliques inverses ailleurs. –

Répondre

1

vous devriez avoir bash/awk/sed dans OS X

for cfile in *.c 
do 
    awk '/#include/{gsub(/\\/,"/")}1' cfile >temp 
    mv temp cfile 
done 

ou

sed -i.bak '/#include/s/\\/\//g' *.c 
+0

Vous auriez pu choisir un délimiteur différent ... –

2
sed '/^[ ]*#[ ]*include/ s:\\:/:g' 

Cela devrait être assez robuste car il devrait prendre une forme juridique de #include mais rien d'autre.

0

Sed est la voie à suivre alors faites-le sur votre Mac.

sed '/^#include/s/\\/\//g'