Mehrere Strings ausschneiden und als Array speichern

D

Daywalker2004

Jungspund
Hallo,

ich schreibe mir gerade ein Shell-Skript das Logfiles hinsichtlich Fehler überprüft. Das Skript soll das Log lesen und Fehlermeldung ausschneiden.

Zum Beispiel:
Code:
RMAN-06004: ORACLE error from recovery catalog database: RMAN-20242: specification does not match any archivelog in the recovery catalog

Ich möchte gerne, dass das Skript jetzt mir folgendes ausschneidet:
Code:
RMAN-06004
RMAN-20242
Die Logzeilen sollen nach folgende Suchmustern durchsucht werden:
Code:
EXP-?????
ORA-?????
RMAN-?????

Leider habe ich nicht wirklich viel Ahnung von sed oder awk, aber ich hoffe ihr helft mir trotzdem. Im Moment schaff ich nur Fehlermeldungen auszulesen die am Anfang stehen.

Code:
set -A ERRORS $(cat $1 | /usr/xpg4/bin/grep -e EXP-* -e ORA-* | awk '{print $1}' | sed "s/://g")

Vielleicht könnt ihr mir helfen. Ich versuch schon die ganze Zeit aus awk schlau zu werden ;D

MfG
Daywalker2004
 
Hallo
Auch hier wieder die Frage aller Fragen

Mit GNU Werkzeugen aka grep könnte das zum Ergebnis führen.

Code:
egrep -o  "(RMAN|ORA|EXP)-[^:]*" input

Da ich nicht weiß, mit welcher Shell du arbeitest, kann ich zu deinem seltsamen set Konstrukt nicht viel sagen.

Immerhin genügt es in der Bash einfach eine Array on the Fly durch Wertzuweisung zu erzeugen.

Code:
MYARRAY=($(echo "test1 test2"))
echo ${MYARRAY[0]}
test1

Gruß Wolfgang
 
Entschuldigung, das habe ich glatt vergessen.

Ich benutzt die Korn-Shell.

Mit dem set Konstrukt erstelle ich das Array.
 
Zurück
Oben