• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

Regex - Brett vorm Kopf

Mitglied seit
15.05.2003
Beiträge
11.307
Reaktionen
8
Ort
Fortuna 1895 Düsseldorf
Hab grad ein Brett vorm Kopf und komm nicht weiter. Ich möchte aus diesem Block:

Code:
axFanStatus OBJECT-TYPE 
	SYNTAX INTEGER {
		failed(0),
		okFixedHigh(4),
		okLowMed(5),
		okMedMed(6),
		okMedHigh(7),
		notReady(-2),
		unknown(-1)
	}
	MAX-ACCESS read-only
	STATUS current
	DESCRIPTION
		"Fan status: 
		   0: Failed, 4: OK-fixed/high, 5: OK-low/med, 6: OK-med/med, 7: OK-med/high, 
		   -2: not ready, -1: unknown."
	::= { axSysFanStatusEntry 3 }

die folgende description filtern:
Code:
"Fan status: 
		   0: Failed, 4: OK-fixed/high, 5: OK-low/med, 6: OK-med/med, 7: OK-med/high, 
		   -2: not ready, -1: unknown."

per regex , wobei die Anzahl der Zeilen variabel sind. Das ganze ist ein MIB File eines Loadbalancers, ich brauche nur die Descriptions dieser Blöcke, bzw das was zwischen den beiden "" steht. leider sind da auch newlines drin.

Bisher komm ich mit meinen regex Kenntnissen nicht weiter

mit /"/s bekomme ich

"Fan status:
-2: not ready, -1: unknown."

raus aber mir fehlt immer die Zeile ohne die Anführungstriche. hat jemand spontan eine idee, wie ich das abfangen kann?
 

Shihatsu

Administrator
Mitglied seit
26.09.2001
Beiträge
49.672
Reaktionen
10.268
Vielleicht die Zeilen Zeilenweise durchgehen und in Register speichern und bei nem Treffer aktuelles Register + Register -1 ausgeben?
 
Mitglied seit
15.05.2003
Beiträge
11.307
Reaktionen
8
Ort
Fortuna 1895 Düsseldorf
eine liste mit oid, oidname und description um entscheiden zu können, welche der werte wir in die Überwachung aufnehmen. Da das MIB File 8500 Zeilen hat, erschien mir das sinnvoll. Ich hatte gehoft das mit wenig aufwand und nem perl einzeiler hinbekommen aber irgendwie hab ich nicht ganz auf der schippe, wie ich die entsprechende regex bauen kann, damit alles zwischen "", also auch über newlines, gematcht wird. shihatus lösung ist natürlich auch machbar aber ich bin soooo faul :D
 
Mitglied seit
02.09.2002
Beiträge
3.281
Reaktionen
106
substring(text, firstindexof(text, "), lastindexof(text, "))
 
Zuletzt bearbeitet:
Mitglied seit
15.05.2003
Beiträge
11.307
Reaktionen
8
Ort
Fortuna 1895 Düsseldorf
drwilly ist das js? da bin ich nicht so fit drin. Habe das ganze mit Perl hinbekommen, hatte tatsächlich ein Blockade.

in ne Schleife gepackt kann ich damit ganz easy alle Descriptions isolieren, die ich brauch.

Code:
$ perl -00 -wnl -e '/axFanStatus\s+OBJECT-TYPE/ and print;' a10-mib.txt | perl -00 -wnl -e '/(".*")/s and print $1;'
"Fan status: 
		   0: Failed, 4: OK-fixed/high, 5: OK-low/med, 6: OK-med/med, 7: OK-med/high, 
		   -2: not ready, -1: unknown."

Mein Fehler gestern war, dass ich beim zweiten Perl Befehl den Match nicht eingefangen hab und immer $_ statt auf $1 ausgeben habe. Brett vorm Kopf halt. Danke trotzdem.
 
Zuletzt bearbeitet:
Oben