SED: Transformer les lignes lues sur l'entrée standard..

Résolu
alla123321 Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   -  
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour ,

j'essaie de résoudre un exercice que j'ai choisi sur internet pour m'entrainer pour mon examen mais je n'arrive pas à trouver la bonne solution .

L'ennoncé :
Transformer les lignes lues sur l'entrée standard de la forme : Luis;12;7 en XML sous la forme <notes nom="Luis"><cc>12</cc><ct>7</ct></notes>

Je sais que je dois utiliser sed(ou grep aussi peut-etre) mais je n'y arrive pas :(
Pourriez vous me donner des idées s'il vous plait ?

Merci .

1 réponse

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Salut,
Je sais que je dois utiliser sed(ou grep
Ni l'un ni l'autre, juste du bash avec notamment les commandes read (pour la lecture sur l'entrée standard) et echo (pour l'écriture sur la sortie standard) et l'utilisation de la variable ${IFS} (pour changer la valeur du séparateur de champ par défaut).

Voir le
man bash
pour les explications et utilisation de ces commandes.

0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Illustration

0
alla123321 Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   1
 
Hmm..merci pour votre réponse .. mais normalement je suis censé utiliser sed puisque l'exo est sous un section de sed.. :/
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430 > alla123321 Messages postés 25 Date d'inscription   Statut Membre Dernière intervention  
 
On peut avoir le lien vers l'exo ?
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430 > alla123321 Messages postés 25 Date d'inscription   Statut Membre Dernière intervention  
 
Il faut utiliser les sous-expressions et les références arrières.

$ sed 's#\([^;]*\);\([^;]*\);\([^;]*\)#<notes nom="\1"><cc>\2</cc><ct>\3</ct></notes>#' <<<'Luis;12;7'
<notes nom="Luis"><cc>12</cc><ct>7</ct></notes>
0