[Shell] variable + SED
Résolu
yacleouf
Messages postés
461
Statut
Membre
-
dubcek Messages postés 19025 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 19025 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 :
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">
A voir également:
- Sed variable bash
- Bingo bash free - Télécharger - Divers Jeux
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
- Vba range avec variable ✓ - Forum VB / VBA
- Vba excel sélectionner une plage de cellules variable ✓ - Forum VB / VBA
- Remplacez le mot sed par le mot mais dans tout le texte. combien de caractères contient le document suite à cette modification (en incluant les espaces) ? ✓ - Forum Shell
2 réponses
Salut,
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 à :
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.
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
essayer
essayer
sed -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
$
Une fois encore tu viens à ma rescousse !
new_entete=$(sed '$! s/$/\\/' <<<"${entete}")ceci était la solution attendue :-)Merci encore !
si je peux abuser, tu pourrais m'expliquer ce passage
<<<"${entete}Merci d'avanceecho "${entete}" | sed '...'merci encore !