comment obtenir le premier nombre de variables
J'ai une variable:
STR="My horse weighs 3000 kg but the car weighs more"
STR="Maruska found 000011 mushrooms but only 001 was not with meat"
STR="Yesterday I almost won the lottery 0000020 CZK but in the end it was only 05 CZK"
J'ai besoin d'obtenir les chiffres:
3000
11
20
Voici une façon de procéder:
Tester:
la source
sed
la fin? Il semble qu'avant d'entrer dans sed, nous avons déjà le résultat que nous voulons.000011
pour lequel vous devez supprimer les zéros de plomb. Mais vous pourriez simplifier en faisant correspondre[1-9][0-9]*
ce qui supprimerait les zéros de tête dès le début:echo $STR | grep -o -E '[1-9][0-9]*'
Si votre implémentation de
grep
n'a pas-o
ou si vous n'utilisez pas Bash, vous pouvez effectuer les opérations suivantes:la source
la source
J'ai placé vos chaînes dans un tableau afin qu'il puisse être facilement itéré pour cette démonstration.
Cela utilise la correspondance d'expression régulière intégrée de Bash.
Seul un modèle très simple est requis. Il est recommandé d'utiliser une variable pour conserver le motif au lieu de l'incorporer directement dans le test de correspondance. C'est essentiel pour des motifs plus complexes.
J'ai inclus les crochets uniquement pour compenser visuellement les chiffres.
Production:
Pour obtenir les chiffres sans les zéros non significatifs, le moyen le plus simple consiste à forcer une conversion en base 10.
En remplaçant cela, la sortie ressemble à ce que vous avez demandé:
la source
Recherchez les expressions régulières et
man grep
.et pour supprimer les zéros non significatifs, traitez-le comme un nombre:
la source