Contenu | Rechercher | Menus

Annonce

Ubuntu-fr.org recrute toujours de nouveaux modérateurs, avec de l'expérience.

Ubuntu 16.04 LTS
Réservez vos DVD et clé USB Ubuntu-fr (premières livraisons mi-mai)

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

M.A.J. en cours du forum possibilité de bug, nous faisons le maximum pour les résoudre au plus vite

#1 Le 01/12/2009, à 00:01

Hizoka

[résolu] Découpage chaine avec délimiteurs présent plusieurs fois

Bonsoir !

je me prends la tête depuis un petit moment là...

je vous expose mon probleme :

Soit la chaine :

--title="Ceci est un titre" --text="Et en voici son contenu" --icon="adresse icone" --heure="il est 23h"

je voudrais supprimer toute la partie :

--text => jusqu'au prochain -- (donc la --icon).

donc il me resterait :

--title="Ceci est un titre" --icon="adresse icone" --heure="il est 23h"

Sachant que cela sera TOUJOURS --texte mais que le -- suivant sera lui différent...

j'ai passé 3 plombs sur SED, je sais qu'il le permet mais je n'y arrive pas...

je ne poste pas toutes les solutions que j'ai testé....

merci !!!

Dernière modification par Hizoka (Le 01/12/2009, à 00:46)

Hors ligne

#2 Le 01/12/2009, à 00:44

Hizoka

Re : [résolu] Découpage chaine avec délimiteurs présent plusieurs fois

bon j'ai résolu en faisant ça :

sed 's/--text="[^"]*" //'

Pour ceux que ça intéresse, cela veut dire :

 s : remplace (sed 's/ancine/nouveau/')
 [^"] : tout sauf "
 [^"]* : tout sauf * autant de fois de suite que besoin
 [^"]*" : tout sauf * autant de fois de suite que besoin jusqu'à " (comme par hasard :p)
 --text="[^"]*" : recherche donc un texte qui commence par --text et qui se termine par "
 // :remplace le texte précédant par "rien" (donc supprime).

de ce fait ça fonctionne smile

Hors ligne

#3 Le 01/12/2009, à 18:23

Totor

Re : [résolu] Découpage chaine avec délimiteurs présent plusieurs fois

Bonsoir,

une façon très tordue de le faire :

uneChaine="--title=\"Ceci est un titre\" --text=\"Et en voici son contenu\" --icon=\"adresse icone\" --heure=\"il est 23h\""
oldIFS="${IFS}"
IFS="--"
# transformation en tableau
uneChaine=( ${uneChaine} )
IFS="${oldIFS}"
# restauration des -- supprimés par la transformation en tableau
uneChaine=( "${uneChaine[@]/#/--}" )
# suppression de l'élément souhaité
uneChaine=( "${uneChaine[@]/--text=*}" )
# suppression des -- superfux
uneChaine=${uneChaine[@]/%--}

-- Lucid Lynx --

Hors ligne

#4 Le 01/12/2009, à 18:43

Hizoka

Re : [résolu] Découpage chaine avec délimiteurs présent plusieurs fois

un chouille plus tordue en effet tongue

Hors ligne

#5 Le 01/12/2009, à 22:12

Totor

Re : [résolu] Découpage chaine avec délimiteurs présent plusieurs fois

Peut-être tordue mais...

time { uneChaine="--title=\"Ceci est un titre\" --text=\"Et en voici son contenu\" --icon=\"adresse icone\" --heure=\"il est 23h\""; for((x=0;x<=10000; x++)); do texte="$(sed 's/--text="[^"]*" //' <<< "${uneChaine}")";done ; }

real    0m24.387s
user    0m9.673s
sys    0m13.157s

time { uneChaine="--title=\"Ceci est un titre\" --text=\"Et en voici son contenu\" --icon=\"adresse icone\" --heure=\"il est 23h\""; for((x=0;x<=10000; x++)); do oldIFS="${IFS}"; IFS="--"; texte=( ${uneChaine} ); IFS="${oldIFS}"; texte=( "${texte[@]/#/--}" ) ; texte=( "${texte[@]/--text=*}" ); texte=${texte[@]/%--}; done ; }

real    0m3.440s
user    0m3.440s
sys    0m0.004s

^^ tongue


-- Lucid Lynx --

Hors ligne

#6 Le 02/12/2009, à 00:22

Hizoka

Re : [résolu] Découpage chaine avec délimiteurs présent plusieurs fois

aller ! va pour ta facon de tordue lol

Hors ligne