Probléme de cut
Résolu
flow825
-
flow825 -
flow825 -
Bonjour,
J'ai une variable en shell qui reçois des noms de fichiers comme cela :
sauvegarde--test_(futurs_testeur)_(XYZabcdefg)-20180530-1114.toc
sauvegarde-fichier-tuille1_(XYZgdrhgfg)-20180530-1114.toc
sauvegarde-démarche_qualité_(ABCfergregg)-20180530-1114.toc
Puis j'utilise la commande suivante pour récupérer la partie en gras :
Cependant pour le premier nom de fichier cela ne fonctionne pas car le cut ce réalise sur la première parenthèse.
Est-il possible de faire en sorte que le cut s’effectue sur les dernières parenthèses pour éviter que dans les cas ou il y ai plus de deux parenthèse dans le nom de fichier de récupère la bonne valeur ?
Merci de vos réponse
J'ai une variable en shell qui reçois des noms de fichiers comme cela :
sauvegarde--test_(futurs_testeur)_(XYZabcdefg)-20180530-1114.toc
sauvegarde-fichier-tuille1_(XYZgdrhgfg)-20180530-1114.toc
sauvegarde-démarche_qualité_(ABCfergregg)-20180530-1114.toc
Puis j'utilise la commande suivante pour récupérer la partie en gras :
echo $filename | cut -d "(" -f2 | cut -d ")" -f1 | cut -c1-3
Cependant pour le premier nom de fichier cela ne fonctionne pas car le cut ce réalise sur la première parenthèse.
Est-il possible de faire en sorte que le cut s’effectue sur les dernières parenthèses pour éviter que dans les cas ou il y ai plus de deux parenthèse dans le nom de fichier de récupère la bonne valeur ?
Merci de vos réponse
3 réponses
-
Salut,
La partie à récupérer correspond toujours à des caractères en majuscule ?
Ou c'était juste un exemple (les majuscules) ?
-
- Ok, je me doutais un peu ;-\
Mais bon...
$ cat f1
sauvegarde--test_(futurs_testeur)_(XYZabcdefg)-20180530-1114.toc
sauvegarde-fichier-tuille1_(XYZgdrhgfg)-20180530-1114.toc
sauvegarde-démarche_qualité_(ABCfergregg)-20180530-1114.toc
$ sed 's/.*(\(...\).*/\1/' f1
XYZ
XYZ
ABC
$ grep -Po '.*\(\K...' f1
XYZ
XYZ
ABC
Transposé sur une variable :$ var="sauvegarde-fichier-tuille1_(XYZgdrhgfg)-20180530-1114.toc"
$ sed 's/.*(\(...\).*/\1/' <<<"${var}"
XYZ
-
-
-
salut,
en bash :$ filename="sauvegarde-démarche_qualité_(ABCfergregg)-20180530-1114.toc"
$ filename="${filename##*(}"
$ echo "${filename::3}
ABC -
Erf, pour une fois que le sujet avait l'air de sortir un peu du thème général de la section;
Je me rend compte que j'ai mal lu le titre.
C'est vicieux, le "l" et le "t" se ressemble de beaucoup!
Belle regex @UnGnU
