Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#1 Le 30/11/2009, à 23: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 30/11/2009, à 23:46)

Hors ligne

#2 Le 30/11/2009, à 23: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, à 17: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, à 17: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, à 21: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 01/12/2009, à 23: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

Haut de page ↑