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

Résolu/Fermé
alla123321 Messages postés 25 Date d'inscription dimanche 20 septembre 2015 Statut Membre Dernière intervention 2 octobre 2016 - 13 déc. 2015 à 13:57
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 13 déc. 2015 à 18:25
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
13 déc. 2015 à 14:20
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
Modifié par zipe31 le 13/12/2015 à 15:48
Illustration

0
alla123321 Messages postés 25 Date d'inscription dimanche 20 septembre 2015 Statut Membre Dernière intervention 2 octobre 2016 1
13 déc. 2015 à 16:50
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > alla123321 Messages postés 25 Date d'inscription dimanche 20 septembre 2015 Statut Membre Dernière intervention 2 octobre 2016
13 déc. 2015 à 18:18
On peut avoir le lien vers l'exo ?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > alla123321 Messages postés 25 Date d'inscription dimanche 20 septembre 2015 Statut Membre Dernière intervention 2 octobre 2016
13 déc. 2015 à 18:25
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