J'ai cette chaîne en bash:bash: extraire double de chaîne
str=sdk.iphoneos4.1.sdk
et je voudrais avoir une variable « 4.1 » dans ce
est-il un moyen d'analyser un flotteur/double valeur dans bash?
J'ai cette chaîne en bash:bash: extraire double de chaîne
str=sdk.iphoneos4.1.sdk
et je voudrais avoir une variable « 4.1 » dans ce
est-il un moyen d'analyser un flotteur/double valeur dans bash?
En supposant que le texte qui l'entoure reste toujours le même:
str=${str#sdk.iphoneos}
str=${str%.sdk}
C'est moins portable (bash
seulement), mais accepte quoi que ce soit à la place de iphoneos
:
shopt -s extglob
str=${str##sdk.*([a-z])}
str=${str%.sdk}
en supposant qu'aucun autre chiffres ailleurs
$ str=sdk.iphoneos4.0.0.1.sdk
$ echo $str | grep -Po '(\d+.*\d+)(?=\.)'
4.0.0.1
Dans Bash 3.2 ou plus:
str=sdk.iphoneos4.1.sdk
pattern='[0-9]+\.[0-9]+'
[[ $str =~ $pattern ]]
echo ${BASH_REMATCH[0]}
Comme dans, extraire le 4.1 de la chaîne ci-dessus? Si c'est le cas, vous devriez être capable de le faire avec 'grep', même si je n'en ai pas l'expérience. L'un des gourous grep ici sera en mesure de vous aider quand même! – Azz
Un numéro de version est une liste d'ints, pas un flottant. Par exemple, 4.1 et 4.001 sont généralement considérés comme équivalents. – grawity