Hallo zusammen, ich bin eine blutige Anfängerin in Sachen Shellscript Progammierung und benötige etwas Hilfe bei meinem Programm. Als Aufgabe habe ich eine Bücherliste (Titel, Autor, Verlag etc.) aus einer Exel Tabelle und soll diverse Infos herausfiltern. Das meiste habe ich geschafft aber leider hänge ich seit Wochen an einer Aufgabe fest und komme gar nicht weiter. Die Aufgabe lautet:
"Es sollen alle in der Datenbank eingetragenen ISBNs geprüft werden. Diese sind entweder zehn- oder dreizehnstellig und dürfen nur Ziffern enthalten (Ausnahme: die letzte Stelle der zehnstelligen ISBN kann ein ’X’ enthalten, das der 10 entspricht). Bindestriche sind zu ignorieren. Für jede zehnstellige ISBN mit den Ziffern z0z1z2...z9 prüfen Sie bitte, ob folgende Bedingung wahr ist: ¨ z0 + 2z1 + 3z2 + 4z3 + 5z4 + 6z5 + 7z6 + 8z7 + 9z8 + 10z9 mod 11 = 0 Bei Verletzung dieser Bedingung geben Sie die fehlerhafte ISBN mit einer deskriptiven Fehlermeldung aus, genauso bei falscher Größe oder falschen Ziffern."
So, ich hatte mir überlegt ich filtere zuerst alle richtigen ISBNs raus. Dazu habe ich folgenden Code:
1 | cut -d ';' -f8 Exeldatei | egrep -o "([0123456789]{9}[0123456789X]{1})|([0123456789]{13}) |
Um mir jetzt die fehlerhaften ISBNS heraus zu bekommen, wollte ich diesen Code einfach negieren und mir danach die übriggebliebenen ausgeben lassen. Geplant hatte ich das so:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #ISBN #richtige ISBNs ISBN=$(( cut -d ';' -f8 Exeldatei | egrep -o "([0123456789]{9}[0123456789X]{1})|([0123456789]{13}) )) if [[ $1 = isbn ]] #Ausgabe falscher ISBNs then echo -e "Ausgabe falscher ISBNs: `cat Exeldatei | awk -F ";" '{ if ($1 != "$ISBN" ) { print "falsche ISBNs: ", $1 } }' ` " fi exit 0 fi |
Das klappt leider nicht so wie erhofft. Und was die modulo Aufgabe angeht, bin ich komplett planlos. Vielleicht hat ja jemand einen Tipp für mich, darüber wäre ich sehr dankbar !! Liebe Grüße
Lisyrah
Bearbeitet von rklm:
Syntaxhighlighting. Bitte beachte Forum/Syntax und nutze die Vorschaufunktion!