Retourner aux forums || Retourner au forum Programmation.shell
Programmation.shell : script sed qui ne fonctionne pas
Posté par MilkaJinka () le 14 avril 2008
#!/bin/sh
# watch out for a '/' in the parameter
# use alternate search delimiter
sed -e '\_#INCLUDE <'"$1"'>_{
# read the file
r '"$1"'
# delete any characters in the pattern space
# and read the next line in
d
}'
Si j'ai bien compris, , en lançant $ ce_script 'fichier_à_inclure' < fichier_à_traiter > fichier_final, le script remplacera le mot INCLUDE dans le fichier à traiter par le contenu du fichier à inclure, le résultat se trouvant dans le fichier final.
Seulement, la substitution ne se fait pas, mon fichier final est une simple copie du fichier à traiter, INCLUDE est toujours là, sur sa ligne dédiée. Avez-vous une idée de pourquoi ça ne fonctionne pas ?
Persiste.
Les commentaires ?
Voir le commentaire sur les commentaires :
Most versions of sed only allow one line as a comment, and it must be the first line. SunOS allows more than one comment, and these comments don't have to be first.
Et pour les non-anglophones :
La plupart des versions de sed n'autorisent qu'une seule ligne de commentaire, et celle-ci doit être la première. SunOS autorise plus d'un commentaire, et ces commentaires n'ont pas besoin d'être en premier.
Maintenant, j'ai pas encore essayé avec GNU sed ...
-
[^]Addendum
Posté par Obsidian () le 14/04/2008 à 15:45. (lien). Évalué à 2.Bon, chezmoicamarche.org, maintenant mais attention aux copier-collers : en transférant le tout de links vers vi, j'ai eu des blancs en début de ligne et surtout en fin de ligne, jusqu'au bout de l'écran. Et visiblement, ça ne plaît pas à sed ...
-
[^]Re: Les commentaires ?
quotes
Apparement, le probleme semble plutot provenir des guillements, simples et doubles ...
-
[^]Re: quotes
Posté par Obsidian () le 14/04/2008 à 15:54. (lien). Évalué à 2.Non, non. Si tu regardes bien, il sont distribués comme il faut, et un copier-coller, nettoyé des saletés transportées avec, fonctionne.
Par contre, il ne faut pas oublier que ce truc est case sensitive. Le script en question transformera les #INCLUDE mais pas les #include.
Trouvé
Merci à tous, j'ai compris ce qui n'allait pas.
Ce n'était pas un problème de commentaires (ils n'étaient pas dans le script que j'utilisais, j'ai copié la version commentée pour plus de clarté), mais que j'avais INCLUDE et non #INCLUDE <fichier_à_inclure> dans mon fichier à traiter.
Pour que ça fonctionne avec simplement INCLUDE, il faut modifier un peu le script :
sed -e '\_INCLUDE_{
r '"$1"'
d
}'
Ou tout simplement, vu qu'on ne risque plus de trouver des barres obliques sur la ligne de texte :
sed '/INCLUDE/{
r '"$1"'
d
}'
Persiste.
-
[^]Re: Trouvé, heu, non...
Posté par Jacques L'helgoualc'h (page perso, ) le 14/04/2008 à 23:45. (lien). Évalué à 1.- Ce code simplifié va inclure le fichier « toto.h » en argument pour chaque ligne « INCLUDE » figurant dans le fichier traité...
- Le script initial ne le fait que pour les « #INCLUDE <toto.h> » --- mais ne marchera pas très bien avec un souligné dans le nom de fichier à inclure.
--
Pas de signature
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.shell



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.