[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 !!