#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)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
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
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
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
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
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.157stime { 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
^^
-- 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
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne