sed 's/\-[0-9]*.*[0-9]*$//' < à corriger...

sed 's/\-[0-9]*.*[0-9]*$//' < à corriger... - Linux et OS Alternatifs

Marsh Posté le 11-03-2006 à 20:28:55    

:hello:
 
J'ai un petit probleme de regexp :
J'ai ecris cette ligne dans un script (ne cherchez pas à comprendre je suis le seul à savoir ce que ca fait :p).
 
mv ${BASE_DIR}/results/${DISTRIBUTION}/`echo ${BASEPKGNAME} | sed 's/\-[0-9]*.*[0-9]*$//'`.orig.tar.gz ${BASE_DIR}/repo/${DISTRIB}/dists/${DISTRIBUTION}/main/source/
 
Le but de cette regexp est de supprimer un motif du genre tiret+nb_qqc_de_chiffres+_eventuellement_un_point+_eventuellement_un_nb_qqc_de_chiffres+fin de ligne
 
L'ennuie c'est que le . est interpreté comme "nimporte quel charactère" et je suis finalement tombé sur un cas qui plante ma regexp :(
 
Pourriez vous m'aider à la corriger ?
 
Merci d'avance :jap:


Message édité par M300A le 11-03-2006 à 20:29:20
Reply

Marsh Posté le 11-03-2006 à 20:28:55   

Reply

Marsh Posté le 11-03-2006 à 20:34:03    

bon, ben si tu es le seul a comprendre... on va pas chercher...

Reply

Marsh Posté le 11-03-2006 à 20:37:01    

Seul le sed à besoin d'être compris et j'ai expliquer le motif que je cherche à supprimer ;)

Reply

Marsh Posté le 11-03-2006 à 20:38:53    

Euh.... echapper le caratctere ? (j'Y connais rien en scripting, donc, je dis peut-etre une c*nnerie)


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 11-03-2006 à 21:13:21    

J'ai testé ca passe pas :(

Reply

Marsh Posté le 11-03-2006 à 21:16:32    

\. ça fonctionne pas ?


---------------
:: Light is Right ::
Reply

Marsh Posté le 11-03-2006 à 21:31:08    

Ca n'a pas l'air, en tout cas pas sur cette exemple : xvidcore_1.1.0-final-0.0

Reply

Marsh Posté le 11-03-2006 à 21:32:18    

gandalf@hellscream:/ripp/pbuilder/scripts$ echo "xvidcore_1.1.0-final-0.0" | sed 's/\-[0-9]*.*[0-9]*$//'
xvidcore_1.1.0


 
Alors que j'attend "xvidcore_1.1.0-final" comme retour :)

Reply

Marsh Posté le 11-03-2006 à 21:35:58    

Le - n'a pas besoin d'être échappé.
Le point doit être échappé si tu veux un point littéral.
"éventuellement un point", c'est {0,1}, et pas *.
 

$ echo "xvidcore_1.1.0-final-0.0"  | sed 's/-[0-9]*\.\{0,1\}[0-9]*$//'
xvidcore_1.1.0-final

Reply

Marsh Posté le 11-03-2006 à 21:36:40    

J'ai rien en echappant le . ca a l'air de fonctionner :p
 
Par contre on doit comme pouvoir la rendre plus propre mon expression...
 
Y'a t'il des meta caractère qui exprime une seul fois, et une fois ou plus ? Parce que la je n'utilise que des *, ca me parait pas optimal !

Reply

Marsh Posté le 11-03-2006 à 21:36:40   

Reply

Marsh Posté le 11-03-2006 à 21:37:24    

Je viens de voir ta réponse pillow  
 
Merci :jap:
 
Je vais corriger ca :)

Reply

Marsh Posté le 11-03-2006 à 21:41:41    

"une fois ou plus" <=> "+" (qu'il faut échapper).
 
$ echo "xvidcore_1.1.0-final-0.0"  | sed 's/-[0-9]\+\.\{0,1\}[0-9]\+$//

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed