[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" ?
A voir également:
- [shell] Récupérer certains caractère
- Caractère ascii - Guide
- Classic shell - Télécharger - Personnalisation
- Caractère spéciaux - Guide
- Recuperer message whatsapp supprimé - Guide
- Caractere speciaux - Guide
2 réponses
En s'inspirant de ta méthode
Autre méthode, avec une expression régulière (c'est plus la classe)
Bonne chance
#!/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
Merci beaucoup !!