Aide sur syntaxe awk

Résolu
kanar Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -  
kanar Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
ou Re pour ceux qui m'ont déjà lu aujourd'hui.

J'ai besoin de remplacer une variable dans un fichier. Chose que je peut faire manuellement bien sûr, mais je souhaite placer la commande dans un script.

Le but est remplacer $(GDAL_ROOT) par .

Voici la commande que j'exécute :
cat GNUmakefile | awk '{ sub("$(GDAL_ROOT)",".");print}' > `pwd`/GNUmakefile

Il ne remplace pas $(GDAL_ROOT), je suppose donc qu'il y a une erreur de syntaxe dans ma recherche.

Pourtant quand je fait :
printf 'Test de remplacement : "$(GDAL_ROOT)"'

Ce sont les bon caractères :
Test de remplacement : "$(GDAL_ROOT)"

Quelqu'un a une petite idée d'où ça peut venir ?

3 réponses

marc[i1] Messages postés 2573 Date d'inscription   Statut Contributeur Dernière intervention   382
 
Re :)

deux choses.
1- Pourquoi ne pas affecter "." à ta variable ?

2- à ta place j'utiliserai sed :
sed -e /$(GDAL_ROOT)/./g -i GNUmakefile


Bien que je préfère la première solution, plus propre. :)
0
kanar Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
C la même chose que ce matin, ce n'est pas moi qui créé le fichier, c'est une automatisation de tâche que je doit faire.

Je connaissait pas le sed... Je vais aller travailler ça, la commande que tu m'a donné n'est pas tout à fait exacte ;)

Je ne peut malheureusement pas redéfinir la variable. Elle est définie dans un fichier d'include, et certaines commandes nécessitent des chemins absolus.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
comme cela
cat GNUmakefile | awk '{ sub('"$(GDAL_ROOT)"',".");print}' > `pwd`/GNUmakefile 


non, en fait j'ai mal lu, plutot
cat GNUmakefile | awk '{ sub("\$(GDAL_ROOT)",".");print}' > `pwd`/GNUmakefile
0
kanar Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Désolé, ça marche pas... j'avais déjà essayé, mais à tout hasard j'ai restesté avec ce que tu avait écrit...

Merci quand même :)
0
kanar Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
C gagné avec la commande sed :

sed -e "s/\$(GDAL_ROOT)/\./g" GNUmakefile > GNUmakefile1

Merci à tous les deux.
0