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 34620 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 34620 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 .
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
-
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 leman bash
pour les explications et utilisation de ces commandes.
-
-
Hmm..merci pour votre réponse .. mais normalement je suis censé utiliser sed puisque l'exo est sous un section de sed.. :/
- 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>
-
