[shell] Récupérer certains caractère
Résolu
Bonjour,
Je tente de récupérer certains carartères à l'intérieur d'une chaine mais mes connaissances sont loin d'être suffisantes.
Exemple :
myvar = abc_def_ghi
echo ${myvar%%_*} renvoie "abc".
echo ${myvar##*_} renvoie "ghi".
Mais j'aimerais également récupérer uniquement "def" ?
Je tente de récupérer certains carartères à l'intérieur d'une chaine mais mes connaissances sont loin d'être suffisantes.
Exemple :
myvar = abc_def_ghi
echo ${myvar%%_*} renvoie "abc".
echo ${myvar##*_} renvoie "ghi".
Mais j'aimerais également récupérer uniquement "def" ?
Configuration: Windows XP Firefox 2.0.0.3
2 réponses
-
Salut,
expr "$myvar" : ".*_\(.*\)_.*"
;-)
-
En s'inspirant de ta méthode
#!/bin/bash export myvar="abc_def_ghi" # le pitch : utiliser # et % au lieu de ## et %% echo "myvar#*_ ${myvar#*_}" echo "myvar%_* ${myvar%_*}" # la solution : plop=${myvar%_*} echo ${plop#*_}
Autre méthode, avec une expression régulière (c'est plus la classe)echo ${my_var} | sed 's/.*_\(.*?\)_.*/\1/'
Bonne chance