marabunta
Goto Top

Bash Nur Zahlen ausgeben regex

Hi,

ich möchte einige Fehler mit case abfangen und divereses automatisieren.

Trotz einem Regex Builder, Antworten auf ähnliche Fragen und Beispielen funktioniert das in meinem Fall nicht.

ERROR
ORA-01017  invalid username/password; logon denied

Davon möchte ich die Zahlen ausgeben lassen. Falls jemand weiß, dass es nötig ist auch das "ORA-" am Anfang auch.

Dieses und ähnliches funktionieren leider nicht:
 echo $sqlreturn | awk '/(\d+)/{print $2 }'  

Danke für jeden hilfreichen Tipp!

Content-Key: 333654

Url: https://administrator.de/contentid/333654

Ausgedruckt am: 19.03.2024 um 11:03 Uhr

Mitglied: 132692
132692 30.03.2017 aktualisiert um 15:01:18 Uhr
Goto Top
echo "$sqlreturn" | sed -nre 's/(\w+-[0-9]+).*/\1/pi'  
oder
echo "$sqlreturn" | grep -Po '\w+-\d+'  
usw.

Gruß p.
Mitglied: Marabunta
Marabunta 30.03.2017 um 15:01:52 Uhr
Goto Top
Das klappt nicht.

sed: illegal option -- r

grep: illegal option -- P
grep: illegal option -- o
Usage: grep [-c|-l|-q] -bhinsvw pattern file . . .
Mitglied: 132692
132692 30.03.2017 aktualisiert um 15:03:57 Uhr
Goto Top
Was nutzt du denn für ein geschröpftes System? Geht hier Ubuntu z.B. einwandfrei!
Mitglied: 132692
132692 30.03.2017 aktualisiert um 15:06:40 Uhr
Goto Top
Geht aber auch ohne die erweiterten Optionen falls dein System so beschnitten ist!
echo "$sqlreturn"  | grep -o '[0-9]*'  
Mitglied: Marabunta
Marabunta 30.03.2017 um 15:06:36 Uhr
Goto Top
echo $sqlreturn | grep -o '[0-9]*'  

grep: illegal option -- o
Usage: grep [-c|-l|-q] -bhinsvw pattern file . . .

hmm =(
Mitglied: 132692
132692 30.03.2017 aktualisiert um 15:08:01 Uhr
Goto Top
Kannst du mal meine Frage beantworten? Welches OS welche Shell?? Ein Grep mit o hat so ziemlich jedes Unix.
Mitglied: Marabunta
Marabunta 30.03.2017 um 15:09:35 Uhr
Goto Top
    sqlreturntocheck=$sqlreturn
    echo "gefiltert"  
    echo $sqlreturn | grep -o '[0-9]*'  

    echo "ende gefiltert"  
    echo "hier ist der sql rückgabe teil"  
    echo $sqlreturn
    echo "hier endet der sql rückgabe teil"  

mit Debugging:

gefiltert
+ echo ERROR '  
ORA-01017' ' invalid username/password; logon denied'  
+ grep -o '[0-9]*'  
grep: illegal option -- o
Usage: grep [-c|-l|-q] -bhinsvw pattern file . . .
+ echo 'ende gefiltert'  
ende gefiltert
+ echo 'hier ist der sql rückgabe teil'  
hier ist der sql rückgabe teil
+ echo ERROR '  
ORA-01017' ' invalid username/password; logon denied'  
ERROR
ORA-01017  invalid username/password; logon denied
+ echo 'hier endet der sql rückgabe teil'  
hier endet der sql rückgabe teil
Mitglied: Marabunta
Marabunta 30.03.2017 um 15:10:32 Uhr
Goto Top
Shell ist bash
SunOS
Mitglied: 132692
Lösung 132692 30.03.2017 aktualisiert um 15:24:17 Uhr
Goto Top
Zitat von @Marabunta:
SunOS
Oh jeh
echo "$sqlreturn" | grep -i '\-[0-9]*' | cut -d" " -f1 | cut -d'-' -f2  
oder
echo "$sqlreturn" | grep -i '\-[0-9]*' | awk -F '[- ]' '{print $2}'  

Jetzt haben wir wirklich bald alles durch face-big-smile ist nur dein besch. OS face-wink. Kannst du alles gerne in einer VM ausprobieren funktioniert alles.
Mitglied: em-pie
em-pie 30.03.2017 um 15:34:38 Uhr
Goto Top
Moin,

wenn man nach grep und SunOS sucht, findet man folgende ManPage:
http://www.manpages.info/sunos/grep.1.html

Vermutlich solltest du es mal mit der Option -e versuchen ...


Gruß
em-pie
Mitglied: Marabunta
Marabunta 30.03.2017 um 15:51:06 Uhr
Goto Top
das erste hat funktioniert, das andere bringt fehler:
awk: syntax error near line 1
awk: bailing out near line 1

Das war es auch "schon". Hätte nicht gedacht, dass es so ein zickiges System gibt.
Vielen Dank hast mir sehr geholfen!