Extraire un nom de repertoire

Résolu
mickey4 Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   -  
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
bonjours
je recupere un nom de fichier suivant
rep1/rep2/../repn/nom-du-fichier

jaimerais savoir comment faire pour extraire seulement les chemins /rep1/rep2/../repn
le nombre de repertoire a traverser n'étant pas constant

merci
A voir également:

5 réponses

blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Salut,

avec quel 'langage' :

shell ou autre ?
0
Jean-François Pillou Messages postés 19261 Date d'inscription   Statut Webmaster Dernière intervention   63 277
 
Par exemple comme ceci :

echo "rep1/rep2/../repn/nom-du-fichier" | sed "s/\(.*\?\/\)[^\/]*/\1/"
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

pour la regex on peu recuperer tout simplement tout jusqu'au dernier / (bon je n'ai pas teste mais je crois que ça marche comme ça :-))
echo "rep1/rep2/../repn/nom-du-fichier" | sed "s/(\.*)\//\1/"

0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
 
Salut,

Plutôt :
echo "rep1/rep2/../repn/nom-du-fichier" | sed -r "s#(.*/).*#\1#"
;-))
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
Salut,

jaimerais savoir comment faire pour extraire seulement les chemins /rep1/rep2/../repn

d'après ça demande il ne voulais pas le / à la fin
(.*/)
donc, il ne faut pas le capturer :-))
"s#(.*)/#\1#"
et tu n'as pas besoin de .* à la fin, c'est une consommation de texte sans justification

tu commences à devenir gourmand toi :-))

et tu te rappelles que -r ne marche pas tout le temps :-)) question de version sed
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
donc, il ne faut pas le capturer :-))
"s#(.*)/#\1#"
echo "rep1/rep2/../repn/nom-du-fichier" | sed -r "s#(.*)/#\1#"
rep1/rep2/../repnnom-du-fichier
Voilà le résultat de ta regex.

et tu n'as pas besoin de .* à la fin, c'est une consommation de texte sans justification
echo "rep1/rep2/../repn/nom-du-fichier" | sed -r "s#(.*/)#\1#"
rep1/rep2/../repn/nom-du-fichier
Ca foire ;-))

et tu te rappelles que -r ne marche pas tout le temps :-)) question de version sed
Je n'ai fait que reprendre ta regex où tu n'avais certe pas mis le switch "-r", mais comme tu n'avais pas protégé les accolades, j'en ai déduit que tu avais juste oublié le switch ;-))
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
(bon je n'ai pas teste mais je crois que ça marche comme ça :-))
alors tu n'as pas vu ça

je vais voir à la maison dès que j'arrive
moi aussi j'ai pris la regex de Jeff, je voulais tout simplement le charrier un peu :-))
0
mickey4 Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   3
 
le language est shell bash
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

la commande dirname n'est pas suffisante?

DIR=$(dirname rep1/rep2/../repn/nom-du-fichier)
echo $DIR

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mickey4 Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   3
 
sa marche merci
0