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

Printed on: April 19, 2024 at 09:04 o'clock

Member: rubberman
rubberman Oct 18, 2014 updated at 11:16:01 (UTC)
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
Member: TheUntouchable
TheUntouchable Oct 18, 2014 at 11:41:16 (UTC)
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
Member: TheUntouchable
TheUntouchable Oct 18, 2014 at 12:23:23 (UTC)
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
Member: rubberman
Solution rubberman Oct 18, 2014, updated at Oct 21, 2014 at 08:02:05 (UTC)
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
Member: TheUntouchable
TheUntouchable Oct 21, 2014 at 08:02:24 (UTC)
Goto Top
Super, das scheint jetzt genau das zu sein, was ich gesucht habe! Vielen Dank! face-smile