Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/01/2016, à 12:20

Yomojito

Script Shell - Insertion de retours à la ligne

Bonjour à tous,

Je suis en train de travailler sur un mini projet en script shell et je rencontre un problème...

Le projet consiste en récupérer un texte justifié, afin de le dé-justifier et de n'afficher qu'une seule phrase par ligne.

Pour arriver à mes fins, j'ai décidé, dans un premier temps, de récupérer tout mon texte justifié et de le mettre dans un fichier n'ayant qu'une seule ligne.

J'aimerais désormais, à chaque fin de phrase, ajouter un saut de ligne.

Petit exemple des 3 premières phrases que j'ai groupé en une seule ligne :

It was the White Rabbit, trotting slowly back again, and lookinganxiously about as it went, as if it had lost something; and she heardit muttering to itself 'The Duchess! The Duchess! Oh my dear paws!

J'aimerais en tirer le résultat suivant :

It was the White Rabbit, trotting slowly back again, and lookinganxiously about as it went, as if it had lost something; and she heardit muttering to itself 'The Duchess!
The Duchess!
Oh my dear paws!

C'est ici que mes limites en script shell arrivent...
J'ai essayé ceci :

sed -e '/\!/ a\\n'

Mais le retour à la ligne ne s'est appliqué qu'une seule fois, en toute fin de ligne:

It was the White Rabbit, trotting slowly back again, and lookinganxiously about as it went, as if it had lost something; and she heardit muttering to itself 'The Duchess! The Duchess! Oh my dear paws!
<ici un saut de ligne>

Avez vous une idée de comment insérer ces retours à la ligne ? Faut-il boucler où s'y prendre différemment ?

Merci d'avance,

Yomojito

Hors ligne

#2 Le 13/01/2016, à 12:35

pingouinux

Re : Script Shell - Insertion de retours à la ligne

Bonjour,
C'est parce que tu ajoutes le caractère \n après la ligne qui contient un !.
Essaye ceci :

sed 's/!/&\x0a/g' fichier

Hors ligne

#3 Le 13/01/2016, à 12:40

Yomojito

Re : Script Shell - Insertion de retours à la ligne

Bonjour,

Ta solution fonctionne très bien, merci!

Pourrais tu m'expliquer la commande?

Merci

Hors ligne

#4 Le 13/01/2016, à 12:52

pingouinux

Re : Script Shell - Insertion de retours à la ligne

Simplification de la commande :

sed 's/!/&\n/g' fichier

s/str1/str2/ : Sur chaque ligne, remplacer la première occurrence de str1 par str2 (str1 peut être une expression rationnelle)
s/str1/str2/g : Remplacer toutes les occurrences de str1 par str2
& : est remplacé par le texte correspondant à str1

On aurait pu faire aussi :

sed 's/!/!\n/g' fichier

Hors ligne

#5 Le 13/01/2016, à 13:05

Yomojito

Re : Script Shell - Insertion de retours à la ligne

Merci ! Très clair! smile

Hors ligne

#6 Le 19/01/2016, à 09:50

pingouinux

Re : Script Shell - Insertion de retours à la ligne

Si ça te convient, merci de modifier ton premier message et d'ajouter [Résolu] dans le titre.

Hors ligne