#1 Le 13/01/2016, à 11: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, à 11: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, à 11: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, à 11: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, à 12:05
- Yomojito
Re : Script Shell - Insertion de retours à la ligne
Merci ! Très clair!
Hors ligne
#6 Le 19/01/2016, à 08: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