Contenu | Rechercher | Menus

Annonce

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

À propos de l'équipe du forum.

#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)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

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


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

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


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

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


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne