135 votes

Obtenir la chaîne après le caractère

J'ai une chaîne qui ressemble à ceci :

 GenFiltEff=7.092200e-01

En utilisant bash, je voudrais juste obtenir le nombre après le = caractère. Y a-t-il un moyen de faire cela ?

167voto

chepner Points 54078

Utiliser l'expansion du paramètre, si la valeur est déjà stockée dans une variable.

$ str="GenFiltEff=7.092200e-01"
$ value=${str#*=}

Ou utilisez read

$ IFS="=" read name value <<< "GenFiltEff=7.092200e-01"

De toute façon,

$ echo $value
7.092200e-01

133voto

Tuxdude Points 8652

Pour le texte après le premier = et avant le prochain =

cut -d "=" -f2 <<< "$your_str"

ou

sed -e 's#.*=\(\)#\1#' <<< "$your_str"

Pour tout texte après le premier = indépendamment du fait qu'il y ait plusieurs =

cut -d "=" -f2- <<< "$your_str"

25voto

Greg Guida Points 2607
echo "GenFiltEff=7.092200e-01" | cut -d "=" -f2

6voto

jman Points 6799

Cela devrait fonctionner :

your_str='GenFiltEff=7.092200e-01'
echo $your_str | cut -d "=" -f2

5voto

Explosion Pills Points 89756
${word:$(expr index "$word" "="):1}

qui obtient le 7 . En supposant que vous voulez dire tout le reste de la chaîne, il suffit de laisser tomber le :1 .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X