Archiv verlassen und diese Seite im Standarddesign anzeigen : zahl in einem String hochzählen
Hi @all,
habe folgendes Problem:
ich muss innerhalb eines scriptes einen string aus einer datei auslesen den ich vorher noch um den wert 1 verändern muss....
inhalt der datei:
alter user system identified by bla_bal10;
die 10 muss zur 11 werden und anschl. benötige ich das pw im ausführenden Script.....
kann mir da jemand helfen ?
undefined
12-12-2008, 14:49
Mit sed oder awk extrahieren, mit expr $val +1 Inkrementieren und wieder zusammen fügen.
Geht aber auch alles mit awk
Moin,
da gibts viele Varianten, hier eine lustige mit sed:
echo "alter user system identified by bla_bal10;" | \
sed -r 's/.+ ([^ ]+);$/\1/;s/([^0-9]+)([0-9]+)/echo \1`expr \2 + 1`/' | sh
Das erste sed-Kommando "s/.+ ([^ ]+);$/\1/" entfernt alles bis zum letzten Leerzeichen aus der Eingabe, das Kommando "s/([^0-9]+)([0-9]+)/echo \1`expr \2 + 1`/" ersetzt das ursprüngliche Passwort durch den Text "echo bla_bal`expr 10 + 1`", dann wird alles einer Shell zur Ausführung vorgeworfen, raus kommt das neue Passwort. Wenn Du das alles in einer Variablen brauchst:
PASS=`echo "alter user system identified by bla_bal10;" | \
sed -r 's/.+ ([^ ]+);$/\1/;s/([^0-9]+)([0-9]+)/echo \1\`expr \2 + 1\`/' | sh`
Hier müssen die internen Backticks entwertet werden, damit die äußere Shell nichts davon mitkriegt.
Und hier noch eine Variante mit awk:
echo "alter user system identified by bla_bal10;" | awk ' {
pass1=gensub(/([^0-9]+)[0-9]+;/, "\\1", "1", $NF);
pass2=gensub(/[^0-9]+([0-9]+);/, "\\1", "1", $NF);
pass2++;
print pass1 pass2; }'Jan
da sed und awk veraltet sind hier eine modernere und einfacherere variante:
echo 'alter user system identified by bla_bal10;' | \
perl -npe '/(.*?)([0-9]+)/; $_=$1.($2+1)'
Moin,
da sed und awk veraltet sind
wow - man erfährt jeden Tag was Neues! Du kannst Dir nicht vorstellen, dass es Systeme gibt, auf denen kein Perl verfügbar ist?
Jan
undefined
18-12-2008, 13:26
Moin,
wow - man erfährt jeden Tag was Neues! Du kannst Dir nicht vorstellen, dass es Systeme gibt, auf denen kein Perl verfügbar ist?
Jan
Mach dir nicht daraus. Ich habe zu dem Zitat nur laut gelacht :D
Mach dir nicht daraus. Ich habe zu dem Zitat nur laut gelacht :D
dafür wars auch gedacht ;)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.