Commande sed bash
Résolu/Fermé
A voir également:
- Sed -i bash
- I showkeyplus - Télécharger - Utilitaires
- I deux point - Forum Windows
- Bouton on off o i - Forum Word
- Ou i ou a a ✓ - Forum Musique / Radio / Clip
- I o on off ✓ - Forum Loisirs / Divertissements
5 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
7 nov. 2010 à 16:45
7 nov. 2010 à 16:45
Salut,
Essaye ça :
;-))
Essaye ça :
sed -n 's#[^[:digit:]]*"\(.\).>\([^:]*\)</text:h>#<h\1>\2</h\1>#gp'
;-))
Bonjour, merci de ta réponse, en fait le fichier n'est pas composé seulement que des balise <text:h> il y en a beaucoup d'autres comme <text:style> dans le fichier lui même, j'ai déjà réussi à traiter ces autres balises mais le text:h bloque car en fait le fichier se présente sous cette forme : <text:span.><text:h.....><text:style>il peut y avoir des numéro ici ou n'importe quel autres balisesblabla</text:style></text:h>Blabla</text:span>
et pour l'instant j'ai réussi à transformer mais les je voudrais juste afficher les balises h en <h1ou2ou3...>et là de dans tout plein de balise d'un nombre totalement indépendant <text:tada num="4">46 blabla</text:tada></h1ou2ou3..>
J'ai testé ta solution mais elle n'affiche rien à l'écran.
Merci de ton aide, =)
et pour l'instant j'ai réussi à transformer mais les je voudrais juste afficher les balises h en <h1ou2ou3...>et là de dans tout plein de balise d'un nombre totalement indépendant <text:tada num="4">46 blabla</text:tada></h1ou2ou3..>
J'ai testé ta solution mais elle n'affiche rien à l'écran.
Merci de ton aide, =)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
7 nov. 2010 à 17:30
7 nov. 2010 à 17:30
Sur le morceau de texte que tu as donné, cette syntaxe marche :
Après c'est l'éternel problème, si vous ne nous donnez pas les exemples concrets, il est impossible de pondre une regex optimisée et adéquate ;-((
$ echo $A <text:h text:style-name="bloublou" text:outline-level="1"><balise aléatoire></balise></text:h><text:h text:style-name="bloublou" text:outline-level="2"><balise aléatoire2></balise><balise aléatoire1></balise></text:h> $ echo $A | sed -n 's#[^[:digit:]]*"\(.\).>\([^:]*\)</text:h>#<h\1>\2</h\1>#gp' <h1><balise aléatoire></balise></h1><h2><balise aléatoire2></balise><balise aléatoire1></balise></h2> $
Après c'est l'éternel problème, si vous ne nous donnez pas les exemples concrets, il est impossible de pondre une regex optimisée et adéquate ;-((
Désolé de n'avoir pas été assez précis, je vous donne l'exemple complet de ce que j'ai à convertir :
Voici ce que j'aimerai en faire :
Voilà j'ai essayé de vous expliquer au mieux par un exemple précis ici, merci de votre aide =)
<text:h text:style-name="Heding20_2" text:outline-level="2"><span class="T1">Texte</span><img src="url.jpg" alt="image"/><span class="T2">Texte</span></text:h><text:h text:style-name="Heding10_1" text:outline-level="1"><text:p>Le texte</text:p></text:h>
Voici ce que j'aimerai en faire :
<h2><span class="T1">Texte</span><img src="url.jpg" alt="image"/><span class="T2">Texte</span></h2><h1><text:p>Le texte</text:p></h1>
Voilà j'ai essayé de vous expliquer au mieux par un exemple précis ici, merci de votre aide =)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
7 nov. 2010 à 18:37
7 nov. 2010 à 18:37
$ echo $B <text:h text:style-name="Heding20_2" text:outline-level="2"><span class="T1">Texte</span><img src="url.jpg" alt="image"/><span class="T2">Texte</span></text:h><text:h text:style-name="Heding10_1" text:outline-level="1"><text:p>Le texte</text:p></text:h> $B | sed -n 's#[^_]*_."[^[:digit:]]*"\(.\).>\([^h]*\)</text:h>#<h\1>\2</h\1>#gp' <h2><span class="T1">Texte</span><img src="url.jpg" alt="image"/><span class="T2">Texte</span></h2><h1><text:p>Le texte</text:p></h1> $
Par contre il ne faut pas que "Texte" ou "Le texte" contienne la lettre "h" ;-((
Aie on ne pourra pas écrire la lettre h dans le texte, c'est assez embêtant, on ne peut pas faire [^</text:h>]* pour s'arrêter à cette balise là snif..
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
7 nov. 2010 à 18:50
7 nov. 2010 à 18:50
Avec ça ça devrait le faire :
sed -n 's#[^_]*_."[^[:digit:]]*"\(.\).>\([^:][^h]*\)</text:h>#<h\1>\2</h\1>#gp';-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question