theuntouchable
Goto Top

Hilfe bei findstr reg expression

Hallo liebe Admins,

ich bräuchte Hilfe beim erstellen einer reg expression mit findstr:

Aus folgender Textdatei sollen nur die Server ausgelesen werden:
# Name der Serverliste
GroupName=Sonstige Linux Server

# Betriebssystem der Serverliste (Windows, Linux, ESX)
GroupOS=Linux

# Shutdown scharf oder nicht scharf schalten, überschreibt die globale Einstellung
GroupArmed=0

# Überprüfe nach Shutdown, ob das jeweilige Gerät noch auf Pings antwortet. Erst danach wird das nächste Gerät heruntergefahren
GroupCheckHost=0

# Maximale Anzahl an Überprüfungen pro Server, bevor abgebrochen und der nächste Server heruntergefahren wird
GroupCheckMaxTrys=15

# Zeit in Sekunden zwischen den einzelnen Überprüfungen
GroupCheckMaxTrysDelay=10

# Liste der Server
TEST-SERVER-01
TEST-SERVER-02
TEST-SERVER-03
TEST-SERVER-04

Mein findstr sieht bis jetzt so aus:
findstr /R "^[^#][a-zA-Z0-9\-]*[^=][a-zA-Z0-9\-]*$" 1-etclsrv.txt  

Hier bekomme ich aber nur folgendes Ergebnis:
TEST-SERVER-01
TEST-SERVER-02
TEST-SERVER-03

Anstatt der letzten Zeile aus der Textdatei erscheint nur eine Leerzeile. Mache ich jetzt eine neue Zeile in die Textdatei, erscheint auch der letzte Server, jedoch bekomme ich wieder eine Leerzeile mit:
TEST-SERVER-01
TEST-SERVER-02
TEST-SERVER-03
TEST-SERVER-04

Kann mir bitte wer helfen?

Grüße
Michael

Content-Key: 252397

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

Ausgedruckt am: 29.03.2024 um 06:03 Uhr

Mitglied: rubberman
rubberman 18.10.2014 aktualisiert um 13:16:01 Uhr
Goto Top
Hallo Michael,

deine letzte Zeile enthält keinen Zeilenumbruch, darum wird $ nicht gematcht. Du könntest statt dessen ein Word Boundary in den Ausdruck bringen. Etwa so:
findstr /R "^[a-zA-Z0-9][a-zA-Z0-9]*-[a-zA-Z0-9-][a-zA-Z0-9]*\>" 1-etclsrv.txt
Grüße
rubberman
Mitglied: TheUntouchable
TheUntouchable 18.10.2014 um 13:41:16 Uhr
Goto Top
Hallo Rubberman und vielen Dank für deine Antwort!

Leider funktioniert deine Abfrage auch nicht.. face-sad Da kommt bei mir dann garnichts mehr raus dabei.

Die Servernamen waren leider nur Beispiele, es gibt hier auch Namen ohne Bindestriche oder mehr Bindestrichen. Ebenfalls müssen auch IP Adressen ansprechbar sein..

Eigentlich sollten nur Zeilen mit einem # am Anfang und die die ein = enthalten ausgeblendet werden.. Alles andere soll erlaubt sein.

Grüße
Michael
Mitglied: TheUntouchable
TheUntouchable 18.10.2014 um 14:23:23 Uhr
Goto Top
Im Moment sieht mein findstr jetzt so aus:

findstr /R "^[^#][a-zA-Z0-9\-\.]*[^=][a-zA-Z0-9\-\.]*$" 1-etclsrv.txt

Und ich mache einfach immer eimal Return nach dem letzten Eintrag..

Für eine Lösung wäre ich trotzdem dankbar face-sad
Mitglied: rubberman
Lösung rubberman 18.10.2014, aktualisiert am 21.10.2014 um 10:02:05 Uhr
Goto Top
Hallo Michael,

wahrscheinlich ist es günstiger, du gehst nach dem Ausschlussverfahren (Option /V).
findstr /VBC:"#" /VRC:"..*=" /VRBC:"$" 1-etclsrv.txt
Zeilen mit # am Anfang, mit = irgendwo in der Mitte und Leerzeilen werden ausgeschlossen.

Grüße
rubberman
Mitglied: TheUntouchable
TheUntouchable 21.10.2014 um 10:02:24 Uhr
Goto Top
Super, das scheint jetzt genau das zu sein, was ich gesucht habe! Vielen Dank! face-smile