lucamarc
Goto Top

Txt. Datei in Excel auswerten und Gruppieren

Hallo liebe Administrator Community,

dies hier ist mein erster Beitrag und direkt eine Frage.

Ich habe das Problem das ich kein wirklicher Excel Profi bin und mir das Internet bis jetzt nicht wirklich weiter geholfen habe. Ich hoffe das es da draußen einen Excel Profi gibt der mir helfen kann.
Ich arbeite mit Excel 2013 und habe folgendes Problem:

Ich hab eine Text datei mit einer Mengen Server Konfigurationen.
Das Schema diese folgendermaßen aus:

define host {
host_name newfinprd11
address 192.168.178.1 (zensiert)
icon_image_alt Windows Server
icon_image base/win40.gif
statusmap_image base/win40.gd2
check_command check-host-alive
check_period 24x7
notification_period 24x7
contact_groups +admins,KP-SAP,LEITSTAND
parents switch-zentral
use generic-host


von diesen Abschnitten sind hunderte in der Textdatei.
Was wichtig für mich ist , ist der zweite Wert bei " contact_groups" . In diesem Fall "KP-SAP".

Was ich möchte ist folgendes: ich suche ein Script welches mir die Textdatei ausliest und in eine Excel Tabelle exportiert so dass ich in der Excel Tabelle Drop Down Menüs habe mit dem "contact_groups" als Überschrift. In Beispiel wäre es dann "KP-SAP". Wenn ich das Dropdown Menü dann öffne möchte ich alle "host_name"s haben die zu dieser "contact_group" gehört.

Ist so etwas möglich?
Ich hoffe es war halbwegs verständlich.

Es sind wirklich hunderte Server die da Gruppiert werden sollen. Das alles Manuell zu tun würde Zeit in Anspruch nehmen die ich nicht habe.

Vielen Dank und viele Grüße,
Luca Marc

Content-Key: 283029

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

Ausgedruckt am: 28.03.2024 um 09:03 Uhr

Mitglied: colinardo
colinardo 16.09.2015 aktualisiert um 12:36:47 Uhr
Goto Top
Hallo LucaMarc, Willkommen auf Administrator.de!

Das kannst du bspw. ziemlich schnell mit folgendem Powershell-Skript erledigen:
$fileIN = 'C:\temp\data.txt'  
$fileOUT = 'C:\temp\export.csv'  
[regex]::Matches((gc $fileIN | out-string),'(?sim)define host.*?host_name\s*([^\s]+).*?contact_groups\s*.*?,([^,]+)').Captures | select @{n="Host";e={$_.Groups[1].Value}},@{n="Group";e={$_.Groups[2].Value}} | sort Group | export-csv $fileOUT -Delimiter ";" -Encoding UTF8 -NoType  
In Zeile 1 gibst du den Pfad zur Textdateien an und in Zeile 2 den Pfad für die zu erzeugende CSV-Datei.

Welche dann so aussieht ( Habe sie hier schon als Tabelle formatiert damit man sie mit den Spaltenfiltern filtern kann):

090565f057d12817d1a02d7a20590fbb

Diese kannst du ja dann nach Gruppe filtern, so dass dir nur die entsprechenden Hosts für diese Grupppe angezeigt werden.
(hier Filter aktiv für Gruppe KP-ABC)

b732b6f6cdbf09584cd3a596b7cde7e2

Grüße Uwe

p.s. der Regular Expression String zum extrahieren deiner Daten ist mit Vorbehalt zu genießen da du hier deine Daten nicht mit Code-Tags ausgezeichnet hast <code> Quellcode </code>, da ansonsten eventuelle Sonderzeichen verloren gehen können!
Mitglied: LucaMarc
LucaMarc 16.09.2015 um 13:15:32 Uhr
Goto Top
Hallo Uwe,


danke erstmal für deinen Lösungsansatz.
Bei dem ausführen deines Skript kriege ich folgende Fehlermeldung : http://imgur.com/pGDx6sO

PS: Ich hab verschiede Pfade ausprobiert. Ich arbeite zudem mit Win 10.
Mitglied: colinardo
colinardo 16.09.2015 aktualisiert um 13:22:03 Uhr
Goto Top
Du hast es fehlerhaft kopiert, in deinem Code in der Grafik fehlt nämlich eine Klammer hinter (?sim deswegen die Fehlermeldung.

Läuft einwandfrei auch unter Windows 10 ...

Und in der zweiten Zeile musst du den Pfad zu einer CSV-Datei angeben keinem Ordner ! Siehst du ja an meinem Beispiel.
Mitglied: LucaMarc
LucaMarc 16.09.2015 um 13:22:01 Uhr
Goto Top
Ja ich habe meinen Fehler grade selber endeckt und werde es nochmal probieren.
Danke auf jedenfall schon mal =).
Mitglied: colinardo
colinardo 30.12.2015 um 20:12:21 Uhr
Goto Top
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.

Guten Rutsch.