Variable mittels regex überprüfen

Status
Für weitere Antworten geschlossen.
N

Nano

Foren As
Hi folgendes Problem

ich habe eine beliebige Variable $x die ich mittels regex überprüfen möchte, da die bashmuster nicht ausreichen, allerdings weiss ich nicht wie
meine idee war z.b

echo $x | grep "regex"

Beispiel zum erkennen ob es sich um zahlen handelt

Code:
echo $x | grep "^[0-9]+$"

was leider keinen erfolg brachte



-------------------------------------
Lösung
Code:
bla=23
blub='ein string'
i="$bla"
if [ $(echo $i | egrep '^[1-9][0-9]*$') ]; then echo "$i ist eine positive natürliche Zahl"; fi
i="$blub"
if [ $(echo $i | egrep '^[1-9][0-9]*$') ]; then echo "$i ist eine positive natürliche Zahl"; fi

danke an Gott_in_Schwarz
 
Zuletzt bearbeitet:
Hi,

ich habe eine beliebige Variable $x die ich mittels regex überprüfen möchte, da die bashmuster nicht ausreichen, allerdings weiss ich nicht wie
meine idee war z.b
Satzzeichen sind deine Freunde ;)
Ich war erstmal etwas irritiert, wieso weiss er nicht wie seine Idee war? ;p

-------------------------------------
Lösung
Code:
bla=23
blub='ein string'
i="$bla"
if [ $(echo $i | egrep '^[1-9][0-9]*$') ]; then echo "$i ist eine positive natürliche Zahl"; fi
i="$blub"
if [ $(echo $i | egrep '^[1-9][0-9]*$') ]; then echo "$i ist eine positive natürliche Zahl"; fi

Alternativ ginge auch
Code:
if [[ $bla =~ '^[1-9][0-9]*$' ]]; then echo "zahl"; fi
Die genaue Syntax fuer =~ ist aber, wie wir hier letztens schonmal feststellten, von der bash version abhaengig, und deswegen eventuell weniger portabel als mit egrep. Ist aber effizienter so, weil kein neuer Prozess gestartet werden muss.

edit:
Ich sehe gerade, dass ihr das in einem anderen Thread von dir schon bis zum erbrechen durchgekaut habt, wieso hast du denn jetzt dafuer nochmal einen neuen Thread aufgemacht?

mfg,
bytepool
 
Zuletzt bearbeitet:
Wie ich im anderen Thread schon sagte, ist diese Variante unabhängig von der Bashversion:
Scheint aber untergegangen zu sein.
Code:
a=123450;
if [ -z ${a//[0-9]/} ];
then
echo "Das ist eine Zahl";
else
echo "Keine Dezimal-Zahl";
fi

Gruß Wolfgang

closed wegen Doppelposting
 
Status
Für weitere Antworten geschlossen.

Ähnliche Themen

Verschlüsseltes Backup-Script mit rsync

HandbrakeCLI Shell Skript

Crontab und Scripts - Problem

[Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

Timeout für Long Time Querys

Zurück
Oben