Programmation.shell : script sed qui ne fonctionne pas
Posté par MilkaJinka () le 14 avril 2008En parcourant la célèbre page http://www.grymoire.com/Unix/Sed.html#uh-37 pour m'initier aux arcanes de sed, il y a un script dont je n'arrive pas à comprendre comment le faire fonctionner :
#!/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 ?
> Lire le message (7 commentaires, moyenne: 1,4).
Vous avez demandé le commentaire #922817.



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...
Pas de signature