On Wednesday 16 July 2003 16:56, B . Carrupt wrote:
> un.deux.trois ---> un.deux
> quatre.cinq.six ---> quatre.cinq
x='un.deux.trois'
y='quatre.cinq.six'
echo ${x%%.trois}
un.deux
echo ${y%%.six}
quatre.cinq
echo ${x##un.}
deux.trois
Mais bon, c'est assez limite bien que l'on puisse utiliser une variable pour
le "pattern". On peut aussi faire :
echo $( echo ${x} | sed 's/\.[a-z]+$//')
Mais, la, ca devient franchement ridicule... on peut aussi passer par awk avec
des performances un poil meilleures mais bon... et tu vas voir les Perlistes
se dechainer. En quoi ils auront raison puisque le shell n'est pas destine a
manipuler des chaines de caracteres.
Toutefois, la chose peut devenir interessante si, comme tu le dis, tu
manipules une liste de fichiers tel que :
ls | sed "s/\.[a-z]+$/${NewSuffix}/"
To obtiens une liste modifiee d'un seul coup
En partant du principe que le suffix est toujours le meme...
ls |\
while read file
do
echo "${file%%.trois}.${NewSuffix}
dobe
Ca reste performant et lisible. De plus, tu as une grande liberte de
traitement a l'interireur de la boucle. Bref tout est combinable mais si le
traitement necessite des calculs et des traitements de chaines de caracteres
plus pousses, il faudrait envisager un autre langage de scripting plus
approprie. Tel que tcl, Python, Perl, etc.
> J'ai un syst�me RedHat 7.2, mais je pense que �a ne doit pas avoir
> d'importance.
Aucune
Daniel
_______________________________________________
gull mailing list
[EMAIL PROTECTED]
http://lists.alphanet.ch/mailman/listinfo/gull