[Shell] variable + SED
Résolu
yacleouf
Messages postés
461
Statut
Membre
-
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour le forum,
je me permets de poster une question qui je pense vous paraitra simple .. (du moins je l'espère ;-) )
je vous détaille ce que je fait :
1/ je récupère les 4 premières lignes d'un fichiers xml que je stock en variable
2/ je souhaite enregistrer cette variable (cette ligne) en tant que première ligne dans un autre fichier :
Or le soucis c'est que la première ligne de mon fichier "monFichierXML_*.xml" n'est pas bien digérée dans le deuxième sed ... :
ci dessous le contenu de la variable entete :
--
Google is your friend!
je me permets de poster une question qui je pense vous paraitra simple .. (du moins je l'espère ;-) )
je vous détaille ce que je fait :
1/ je récupère les 4 premières lignes d'un fichiers xml que je stock en variable
entete=$(sed -n -e '1,4p' monFichierXML_*.xml)
2/ je souhaite enregistrer cette variable (cette ligne) en tant que première ligne dans un autre fichier :
sed -i '1i\' ${entete} \n ' ${Folder}/referentiels/liste.xml
Or le soucis c'est que la première ligne de mon fichier "monFichierXML_*.xml" n'est pas bien digérée dans le deuxième sed ... :
sed: can't read <?xml: No such file or directory sed: can't read version="1.0": No such file or directory sed: can't read encoding="UTF-8"?>: No such file or directory sed: can't read <toor: No such file or directory sed: can't read xmlns="https://www.amazon.fr/": No such file or directory sed: can't read timestamp="2013-03-12T13:01:18.409+01:00">: No such file or directory sed: can't read n: No such file or directory sed: can't read ${Folder}/referentiels/referentiels.xml
ci dessous le contenu de la variable entete :
<?xml version="1.0" encoding="UTF-8"?> <toor xmlns="https://www.amazon.fr/" timestamp="2013-03-12T13:01:18.409+01:00">
--
Google is your friend!
2 réponses
-
Salut,
entete=$(sed -n -e '1,4p' monFichierXML_*.xml) new_entete=$(sed '$! s/$/\\/' <<<"${entete}") sed -i '1i\ '"${new_entete}"' \n ' ${Folder}/referentiels/liste.xml
Attention à l'imbrication des quotes simples/doubles dans la 2nd parties :-\
Sinon, la syntaxe d'insertion dans sed doit impérativement mettre un anti-slash à chaque fin de ligne en cas d'ajout, sauf pour la dernière.
En gros ta variable pour l'insertion doit ressembler à :<?xml version="1.0" encoding="UTF-8"?> \ <toor xmlns="[http://www.a.fr]" \ timestamp="2013-03-12T13:01:18.409+01:00"\ >
J'ai mis les retours à la ligne au pif...
Zen my nuggets ;-)
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot. -
hello
essayersed -i "1i\${entete}\n" ${Folder}/referentiels/liste.xml-
-
-
-
pourtant je conserve bien les "
$ entete='<?xml version="1.0" encoding="UTF-8"?> <toor xmlns="http://www.a.fr" timestamp="2013-03-12T13:01:18.409+01:00">' $ date > a $ sed -i "1i${entete}" a $ cat a <?xml version="1.0" encoding="UTF-8"?> <toor xmlns="[http://www.a.fr]" timestamp="2013-03-12T13:01:18.409+01:00"> Tue Jul 2 08:49:51 CEST 2013 $ -
-