(bash) Récupérer une sous chaine en regex

Fermé
Marine - 19 juin 2012 à 15:08
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 20 juin 2012 à 12:08
Bonjour tout le monde,

Je bute sur une histoire d'expression régulière toute bête :

J'ai un fichier appelé monFichier.ssa et je veux simplement en extraire le nom "monFichier" (sans le .ssa) dans une variable !

J'essaye plusieurs techniques comme avec la commande sed :
sed -e '\(.*\)\.ssa'
Mais rien à faire, il doit y avoir une notion qui m'échappe...
Je ne suis même pas sure que sed soit la commande adéquate, car j'ai cru comprendre qu'elle sert surtout à renommer des sous chaînes.

Je vous remercie par avance ! :-)


1 réponse

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
19 juin 2012 à 15:15
ello
avec basename, par exemple
$ basename monFichier.ssa .ssa
monFichier
$ 
0
Je ne connaissais pas cette commande,
J'ai essayé :
'basename $fichier .ssa'
(Sachant que echo $fichier donne le chemin jusqu'à mon fichier)
Et j'obtiens des messages "not found".
Est-ce parce que mon $fichier contient le chemin en plus du nom du fichier ?
Dans mon script je n'ai pas d'autre choix que d'avoir une variable fichier qui contient tout le chemin en plus du nom du fichier...
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
19 juin 2012 à 15:48
le chemin ne pose pas de problème
$ fichier="/aaa/bbb/monFichier.ssa"
$ basename $fichier .ssa
monFichier
$
0
Je n'y arrivais pas avec basename, je ne sais pas pourquoi... Mais merci beaucoup pour ton aide dubcek !
J'ai finalement réussi à obtenir ce que je voulais avec :
fichier_sans_extension=${fichier_à_traiter%%.ssa}
(Ce qui n'a plus rien d'une regex, mais tant que ça marche... !)

:-)
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
20 juin 2012 à 12:08
c'est la meilleure méthode puisqu'elle n'utilise pas de commande externe au shell, sinon avec sed:
$ ichier="/aaa/bbb/monFichier.ssa"
$ sed -e 's/\.ssa//' <<<$fichier
/aaa/bbb/monFichier
$ 
0