-3
votes

Obtenir uniquement des chiffres en sortie

J'ai besoin d'obtenir uniquement des chiffres à partir de ceci: version / m_0.1.0 Ainsi, il faut extraire avec Bash pour avoir en sortie ceci: 0.1.0 . J'ai essayé cela mais je ne peux pas la finir: echo "version / m_0.1.0" | AWK -F '/' '{IMPRESSION 2 $}'

Et qu'en est-il si donné une telle chaîne? Relea234SE / sdf23_4mm0.1.0.8 . Comment obtenir uniquement 0.1.0.8 ? Veuillez faire attention que cela peut être des chiffres aléatoires tels que 0.2 ou 1.9.1 . .


1 commentaires

Votre entrée est-elle provenant d'un fichier, d'un tuyau et d'une variable ou autre chose?


7 Réponses :


0
votes

Considérant que votre fichier INPUT_FILE sera identique à celui indiqué des échantillons.

echo "${var#*_}"


0 commentaires

2
votes

Veuillez vérifier si ce grep fonctionne fonctionne xxx


0 commentaires

2
votes

avec SED code> Vous pouvez faire:

0.1.0


0 commentaires

0
votes
echo release/M_0.1.0 | awk -F\_ '{print $2}'
0.1.0

0 commentaires

0
votes

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


0 commentaires

3
votes

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


2 commentaires

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;)



0
votes

Si des données dans d code> fichier, essayé sur GNU SED:

sed -E 's/relea.*/.*([0-9][0-9.]*)$/\1/' d


0 commentaires