wie man die erste Anzahl von Variablen erhält
Ich habe eine 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"
Ich muss die Zahlen bekommen:
3000
11
20
Hier ist eine Möglichkeit, dies zu tun:
Prüfung:
quelle
sed
am Ende? Es scheint, als hätten wir bereits das gewünschte Ergebnis, bevor es in sed geht.000011
für die Sie die führenden Nullen entfernen müssen. Aber Sie könnten vereinfachen, indem Sie übereinstimmen,[1-9][0-9]*
was die führenden Nullen von Anfang an entfernen würde:echo $STR | grep -o -E '[1-9][0-9]*'
Wenn Ihre Implementierung von Bash
grep
nicht hat-o
oder Sie Bash nicht verwenden, können Sie Folgendes tun:quelle
quelle
Ich habe Ihre Zeichenfolgen in ein Array eingefügt, damit sie für diese Demonstration problemlos wiederholt werden können.
Dies verwendet Bashs eingebauten Matching für reguläre Ausdrücke.
Es ist nur ein sehr einfaches Muster erforderlich. Es wird empfohlen, eine Variable zu verwenden, um das Muster zu halten, anstatt es direkt in den Übereinstimmungstest aufzunehmen. Es ist wichtig für komplexere Muster.
Ich habe die eckigen Klammern nur eingefügt, um die Zahlen visuell hervorzuheben.
Ausgabe:
Um die Zahlen ohne die führenden Nullen zu erhalten, ist es am einfachsten, eine Basis-10-Konvertierung zu erzwingen.
Wenn Sie dies ersetzen, sieht die Ausgabe wie folgt aus:
quelle
Suchen Sie nach regulären Ausdrücken und
man grep
.und um die führenden Nullen zu entfernen, behandeln Sie sie als Zahl:
quelle