Sed et chaines de caracteres
Résolu
crazyghandi
Messages postés
312
Date d'inscription
Statut
Membre
Dernière intervention
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je trouve des tas d'exemples pour sed sur les forums mais aucun n'explique completement l'utilisation.
je voudrais traiter par exemple :
$ligne = "mot1 *mot2 mot3* //mot4
et le transformer en :
$out = "<p>mot1<strong>mot2 mot3</strong><--!mot4--></p>
quelqu'un pourraitil m'aiguiller sur la bonne voie ?
merci d'avance
je trouve des tas d'exemples pour sed sur les forums mais aucun n'explique completement l'utilisation.
je voudrais traiter par exemple :
$ligne = "mot1 *mot2 mot3* //mot4
et le transformer en :
$out = "<p>mot1<strong>mot2 mot3</strong><--!mot4--></p>
quelqu'un pourraitil m'aiguiller sur la bonne voie ?
merci d'avance
A voir également:
- Sed et chaines de caracteres
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Caractères spéciaux mac - Guide
- Caracteres speciaux - Guide
7 réponses
Salut,
J'imagine que le guillemet doit prendre toute la ligne ?
Ce code devrait réaliser ce que tu veux :
Cdlt
J'imagine que le guillemet doit prendre toute la ligne ?
Ce code devrait réaliser ce que tu veux :
ligne = '"mot1 *mot2 mot3* //mot4' out=$(echo $ligne | sed -r 's#//(.*)#<!--\1-->#g; s#"(.*)#<p>\1</p>#g; s#\*(.*)\*#<strong>\1</strong>#g') echo $out
Cdlt
merci pour la reponse.
je commence a comprendre
en realite je veux lire un fichier ligne par ligne pour le convertir en html et le mettre a jour dans le fichier de sortie :
while read ligne
do
#echo -------------------
out=$(echo $ligne | sed -r 's#//(.*)#<!--\1-->#g; s#"(.*)#<p>\1</p>#g; s#\*(.*)\*#<strong>\1</strong>#g') > t.xhtml
#echo sortie
#echo $out
#echo -------------------
done < $2
seulement il me sort un fichier vide, comment faire ?
encore merci
je commence a comprendre
en realite je veux lire un fichier ligne par ligne pour le convertir en html et le mettre a jour dans le fichier de sortie :
while read ligne
do
#echo -------------------
out=$(echo $ligne | sed -r 's#//(.*)#<!--\1-->#g; s#"(.*)#<p>\1</p>#g; s#\*(.*)\*#<strong>\1</strong>#g') > t.xhtml
#echo sortie
#echo $out
#echo -------------------
done < $2
seulement il me sort un fichier vide, comment faire ?
encore merci
Normal,
Si tu rediriges cette sortie :
out=$(echo $ligne | sed -r 's#//(.*)#<!--\1-->#g; s#"(.*)#<p>\1</p>#g; s#\*(.*)\*#<strong>\1</strong>#g')
dans un fichier, rien ne s'affichera à l'écran puisque le résultat de cette commande affectera out. Donc aucun affichage à l'écran.
Utilise plutôt :
out=$(echo $ligne | sed -r 's#//(.*)#<!--\1-->#g; s#"(.*)#<p>\1</p>#g; s#\*(.*)\*#<strong>\1</strong>#g')
echo $out > t.xhtml #ceci stocke dans le fichier t.xhtml
echo $out #ceci affiche à l'écran.
Si tu rediriges cette sortie :
out=$(echo $ligne | sed -r 's#//(.*)#<!--\1-->#g; s#"(.*)#<p>\1</p>#g; s#\*(.*)\*#<strong>\1</strong>#g')
dans un fichier, rien ne s'affichera à l'écran puisque le résultat de cette commande affectera out. Donc aucun affichage à l'écran.
Utilise plutôt :
out=$(echo $ligne | sed -r 's#//(.*)#<!--\1-->#g; s#"(.*)#<p>\1</p>#g; s#\*(.*)\*#<strong>\1</strong>#g')
echo $out > t.xhtml #ceci stocke dans le fichier t.xhtml
echo $out #ceci affiche à l'écran.
en cherchant sur des forums j'ai trouve :
sed 's@^\(.*\)\*\(.*\)\*.*//\(.*$\)@<p>\1<strong>\2<\\strong><--!\3--><//p>@g' $2 >> t.xhtml
c'est pas mal mais n'opere pas les modifs.
au final c'est mieux de traiter tou d'un coup avec sed ou ligne par ligne avec while ?
merci
sed 's@^\(.*\)\*\(.*\)\*.*//\(.*$\)@<p>\1<strong>\2<\\strong><--!\3--><//p>@g' $2 >> t.xhtml
c'est pas mal mais n'opere pas les modifs.
au final c'est mieux de traiter tou d'un coup avec sed ou ligne par ligne avec while ?
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
while read ligne
do
out=$(echo $ligne | sed -r 's#//(.*)#<!--\1-->#g; s#"(.*)#<p>\1</p>#g; s#\*(.*)\*#<strong>\1</strong>#g')
echo $out > t.xhtml #ceci stocke dans le fichier t.xhtml
done < $2
ceci me redonne un fichier vide
do
out=$(echo $ligne | sed -r 's#//(.*)#<!--\1-->#g; s#"(.*)#<p>\1</p>#g; s#\*(.*)\*#<strong>\1</strong>#g')
echo $out > t.xhtml #ceci stocke dans le fichier t.xhtml
done < $2
ceci me redonne un fichier vide
echo $out >> t.xhtml #ceci stocke dans le fichier t.xhtml
ceci marche c'est super
pourriez vous me detailler la commande que je puisse tout seul rajouter d'autres balises du genre
transformer {img} en <img> ou ~texte~ en <i>texte</i> ?
de plus le <p> ne marche pas tout a fait bien je voudrais que chaque ligne soit completement encadre par <p> et </p>
encore merci pour votre aide
ceci marche c'est super
pourriez vous me detailler la commande que je puisse tout seul rajouter d'autres balises du genre
transformer {img} en <img> ou ~texte~ en <i>texte</i> ?
de plus le <p> ne marche pas tout a fait bien je voudrais que chaque ligne soit completement encadre par <p> et </p>
encore merci pour votre aide
Salut,
je trouve des tas d'exemples pour sed sur les forums mais aucun n'explique completement l'utilisation.
Sed - Introduction à SED - Part I
Sed - Introduction à SED - Part II
Sed - Introduction à SED - Part III
Sans oublier FAQ SED
je trouve des tas d'exemples pour sed sur les forums mais aucun n'explique completement l'utilisation.
Sed - Introduction à SED - Part I
Sed - Introduction à SED - Part II
Sed - Introduction à SED - Part III
Sans oublier FAQ SED