J'ai besoin d'obtenir uniquement des chiffres à partir de ceci:
Et qu'en est-il si donné une telle chaîne? version / m_0.1.0 code>
Ainsi, il faut extraire avec Bash pour avoir en sortie ceci:
0.1.0 code>.
J'ai essayé cela mais je ne peux pas la finir:
echo "version / m_0.1.0" | AWK -F '/' '{IMPRESSION 2 $}' CODE> P>
Relea234SE / sdf23_4mm0.1.0.8 code>. Comment obtenir uniquement
0.1.0.8 code>? Veuillez faire attention que cela peut être des chiffres aléatoires tels que
0.2 code> ou
1.9.1 code>. P>.
7 Réponses :
Considérant que votre fichier INPUT_FILE sera identique à celui indiqué des échantillons.
echo "${var#*_}"
Veuillez vérifier si ce grep code> fonctionne fonctionne
avec SED code> Vous pouvez faire:
0.1.0
echo release/M_0.1.0 | awk -F\_ '{print $2}' 0.1.0
Prenez votre choix:
$ var='relea234se/sdf23_4Mm0.1.0.8' $ [[ $var =~ .*[^0-9.](.*) ]] && echo "${BASH_REMATCH[1]}" 0.1.0.8 $ echo "$var" | sed 's/.*[^0-9.]//' 0.1.0.8 $ echo "$var" | awk -F'[^0-9.]' '{print $NF}' 0.1.0.8
Vous pouvez également utiliser l'analyse générale de l'expansion des paramètres généraux pour supprimer littéralement les caractères via le dernier qui ne correspond pas à des chiffres ou de points.
$: ver() { echo "${1//*[^.0-9]/}"; } $: ver release/M_0.1.0 0.1.0 $: ver relea234se/sdf23_4Mm0.1.0.8 0.1.0.8
Darn, c'est la première chose que j'ai essayée et j'ai eu la syntaxe mal et j'ai pensé que Bash ne pouvait pas le faire de cette façon :-)!
J'ai géré quelque chose de goofed? Je pense que je vais marquer ceci sur mon calendrier et un preen un peu, lol;)
Si des données dans d code> fichier, essayé sur GNU SED:
sed -E 's/relea.*/.*([0-9][0-9.]*)$/\1/' d
Votre entrée est-elle provenant d'un fichier, d'un tuyau et d'une variable ou autre chose?