Sed sauf derniere occurrence

10 réponses
Avatar
Ozzii
Bonjour,
je n'arrive pas =E0 trouver comment faire.
Comment faire (avec un sed par exemple). pour substituer tout les "." sauf =
le dernier.....
A=3D"truc.truc1.extension"
B=3D`echo "$A"|sed 's/\./ /g'`
Donc dans B j'ai "truc truc1 extension"
Cependant j'aurais besoin d'avoir "truc truc1.extension"
Si cela peut faciliter je peut avoir une variable avec la liste des extensi=
ons: EXT=3D"extension ext2 ext3"

Donc: comment substituer sauf la derni=E8re occurrence?

Merci par avance.

10 réponses

Avatar
Stephane Chazelas
2012-03-13 05:33:40 -0700, Ozzii:
Bonjour,
je n'arrive pas à trouver comment faire.
Comment faire (avec un sed par exemple). pour substituer tout les "." sauf le dernier.....
A="truc.truc1.extension"
B=`echo "$A"|sed 's/./ /g'`
Donc dans B j'ai "truc truc1 extension"
Cependant j'aurais besoin d'avoir "truc truc1.extension"
Si cela peut faciliter je peut avoir une variable avec la liste des extensions: EXT="extension ext2 ext3"

Donc: comment substituer sauf la dernière occurrence?


[...]

sed -e :1 -e 's/.(.*.)/ 1/;t1'

--
Stephane
Avatar
Ozzii
En fait je viens de trouver:
Je change juste la dernière occurrence avec:
sed 's/(.*) /1./'

Merci quand même...
Avatar
Ozzii
Merci Stephane..
C'est vrai que je ne le comprend pas trop mais il fonctionne. C'est ça l' important.
Avatar
Hugues
Coucou à tous,

Ce cher Ozzii a posté :

Merci Stephane..
C'est vrai que je ne le comprend pas trop mais il fonctionne. C'est ça l'important.



Pour la compréhension, le man de sed est très instructif :-)
Tu as juste à voir les commandes ":", et "t" ..

--
Hugues Hiegel [http://www.hiegel.fr/~hugues/]
Avatar
Hugues
Tagazok à vous,

Ce cher Stephane Chazelas a posté :

sed -e :1 -e 's/.(.*.)/ 1/;t1'



Pourquoi utiliser -e ?
C'est bien strictement équivalent à :

sed ':1;s/.(.*.)/ 1/;t1'

ou bien une subtilité m'échappe ?

--
Hugues Hiegel [http://www.hiegel.fr/~hugues/]
Avatar
Ozzii
Chez moi ce sed ne fonctionne pas.
J'ai: Label too long: :1;s/.(.*.)/ 1/;t1
Avatar
Stephane Chazelas
2012-03-13 16:41:11 +0100, Hugues:

Tagazok à vous,

Ce cher Stephane Chazelas a posté :
>
> sed -e :1 -e 's/.(.*.)/ 1/;t1'

Pourquoi utiliser -e ?
C'est bien strictement équivalent à :

sed ':1;s/.(.*.)/ 1/;t1'

ou bien une subtilité m'échappe ?


[...]

Pas standard. Les commandes :, t, b, } et d'autres doivent etre
suivi d'un n ou etre la derniere command de l'expression.

Voir details a
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html

--
Stephane
Avatar
Hugues
Ce cher Stephane Chazelas a posté :

2012-03-13 16:41:11 +0100, Hugues:

Tagazok à vous,

Ce cher Stephane Chazelas a posté :
>
> sed -e :1 -e 's/.(.*.)/ 1/;t1'

Pourquoi utiliser -e ?
C'est bien strictement équivalent à :

sed ':1;s/.(.*.)/ 1/;t1'

ou bien une subtilité m'échappe ?


[...]

Pas standard. Les commandes :, t, b, } et d'autres doivent etre
suivi d'un n ou etre la derniere command de l'expression.



Ok. Donc on peut éventuellement continuer sur la ligne suivante.
Mais l'utilisation des multiples -e '..' me semble effectivement plus logique, du coup.

Voir details a
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html



K, thx, bye ! :)

--
Hugues Hiegel [http://www.hiegel.fr/~hugues/]
Avatar
Ozzii
Merci à tout les deux pour votre aide.
Avatar
Cyrille Lefevre
Le 14/03/2012 13:06, Ozzii a écrit :
Merci à tout les deux pour votre aide.



Bonjour,

pour mémoire : http://sed.sourceforge.net/grabbag/

pour awk, c'est : http://awk.info

Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.