Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich habe folgendes Problem. Ich habe eine txt-Datei, in welcher in jeder Zeile title=' ip-adresse' und host= Servername steht. In jeder Zeile ist dann natürlich eine unterschiedliche Ip-adresse und ein unterschiedlicher Servername. Zusätzlich dazu stehen in jeder Zeile noch weitere andere Informationen, die nicht benötigt werden. Ist es mit Hilfe der Powershell möglich nur bestimmte Passagen eines Strings ausgeben zu lassen? Also den Rest quasi auszuschneiden ( habe select-string ausprobiert, ohne jedoch das gewünschte Ergebnis erzielen zu können). Vielen danke schonmal.

Lg

homer123

Geschrieben

Hallo Homer123,

angenommen man hat diese Textdatei:


title=' 10.204.12.31' host= SERVER001

title=' 10.204.12.32' host= SERVER002

title=' 10.204.12.33' host= SERVER003

Dann könnte man die IP und den Servernamen über folgenden Schnipsel auslesen:

$txtFile = "C:\test.txt"                #Definiere den Speicherort der Textdatei

$txtContent = Get-Content $txtFile      #Lese den Inhalt der Textdatei ein


Foreach($row in $txtContent) {          #Gehe jede Zeile durch

    $ip = $row.Substring(8,12)          #IP steht an 8. Position und hat 12 Zeichen

    $servername = $row.Substring(32)    #Servername steht ab 32. Position bis zum Ende

}

Voraussetzung hierbei ist, dass die Felder immer die gleiche Anzahl an Zeichen haben. Wenn dem nicht so ist, müsste man vorher z.B. über IndexOf die Position eines Trennzeichens ermitteln.

Hilft dir das etwas weiter?

Geschrieben

danke schonmal für deine Antwort. Das ist schonmal ein Anfang. Allerdings habe ich genau das Problem , dass die Anzahl der Zeichen und die Stelle in der Zeile unterschiedlich ist. kannst du das vllt mit IndexOf näher erläutern?

Geschrieben (bearbeitet)

Hallo Homer123,

ich versuchs:



Foreach($row in $txtContent) {          #Gehe jede Zeile durch

    #$row: "title='10.2.12.31' host= SERVER01"

    $firstIndex = $row.IndexOf("'")                   #Gibt die Position des ersten Hochkommata zurück - hier: 6

    $secondIndex = $row.IndexOf("'",$firstIndex + 1)  #Gibt die Position des ZWEITEN Hochkommata zurück, da erst "ab hinter dem ersten Hochkommata" gesucht wird. - hier auch: 20

    $ip = $row.Substring($firstIndex, $secondIndex)   #Schneide den Text zwischen den beiden Hochkommata aus.

}

Diese Methode ist zwar vielleicht nicht die Beste, erfüllte jedoch stets meine Zwecke. Am besten probierst Du es einfach nochmal aus und gibst die Werte $firstIndex und $secondIndex aus.

Wenn Dir das immer noch nicht weiterhilft, wäre es vielleicht sinnvoll, wenn du einen Ausschnitt deiner Textdatei (sinngemäß) postest.

Bearbeitet von elyon
Substring vergessen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...