Je veux analyser une variable (dans mon cas, c'est la version du kit de développement) pour la rendre dot ( .
) libre. Si version='2.3.3'
, la sortie souhaitée est 233
.
J'ai essayé comme ci-dessous, mais cela nécessite .
d'être remplacé par un autre personnage me le donnant 2_3_3
. Cela aurait été bien si tr . ''
cela avait fonctionné.
1 VERSION='2.3.3'
2 echo "2.3.3" | tr . _
bash
text-processing
priagupd
la source
la source
echo "2.3.3" | tr -d .
.VERSION='2.30.3100'
? Peu importe ce qui vient.
d'être enlevé avec toutes les réponses ici.Réponses:
Il n'est pas nécessaire d'exécuter un programme externe.
bash
La manipulation de chaîne de caractères peut le gérer (également disponible dansksh
(d'où il provient) etzsh
):(Dans les manuels de ces coques, vous le trouverez dans la section relative à l'extension des paramètres.)
la source
${string//substring/replacement}
: apparemment, l'absence de la barre oblique finale et de la chaîne de remplacement est interprétée comme une suppression . Voir ici .man bash
dit clairement dans la section Expansion des paramètres du shell : “${parameter/pattern/string}
(…) Si string est nul, les correspondances de modèle sont supprimées et le modèle/
suivant peut être omis.”"1.0.0"
et que je ne voulais que le numéro, suivez donc ce que @manatwork a suggéré de remplacer:"${VERSIONNUM//'"'}"
toutefois, je l'insère,' '
car sinon, il ne reconnaîtrait pas la""
chaîne similaire à enlever."
sont présents dans la valeur? J'ai bien peur que cela compte comme une nouvelle question, mais essayez d'échapper à la double citation:"${VERSIONNUM//\"}"
pastebin.com/3ECDtkwH-ash
aussi!Par ordre chronologique:
tr / sed
csh / tcsh
Coquilles POSIX:
ksh / zsh / bash / yash (et busybox
ash
quand construit avecASH_BASH_COMPAT
)zsh
la source
En plus des réponses réussies existe déjà. La même chose peut être réalisée avec
tr
, avec l'--delete
option.Quel sera le résultat:
233
la source
--delete
drapeau n'est pas reconnu, mais vous pouvez utiliser à la-d
placevous devriez essayer avec à la
sed
placesed 's/\.//g'
la source
Cela ne renverrait que des chiffres, quels que soient les autres caractères présents
la source
Perl
Python
Si
$VERSION
seulement contient des chiffres et des points, nous pouvons faire quelque chose d'encore plus court:(attention, c'est une vulnérabilité d'injection de code, bien que
$VERSION
pouvant contenir n'importe quel caractère).AWK
Ou ca:
la source