none
String - Split und remove RRS feed

  • Frage

  • Guten Tag,

    Ich bin ein Powershell-Anfänger und stehe aktuell von einem Rätsel. Jedoch weiss ich, dass es hier jemand gibt, der mir helfen kann.

    Zu meinem Problem:

    Ich lese per Get-Content eine .txt-Datei ein. Diese besitzt nichts anderes als ein paar Links; z.B:

    • www.wrike.com
    • www.google.ch
    • test.ch
    • pix.Hallo.ch

    Nun benötige ich für die Weiterverarbeitung jedoch nur die Domäne (wrike / google / test / Hallo)

    Hat Jemand eine Idee, wie ich diese "rausfiltern" kann?


    Besten Dank für eure Hilfe!


    Freundliche Grüsse


    • Bearbeitet Schmidi_ch Mittwoch, 5. Oktober 2016 11:20 Links editiert
    Mittwoch, 5. Oktober 2016 11:19

Antworten

Alle Antworten

  • Moin,

    so etwas?

    Get-Content "FILE.TXT" | foreach {
    $parts = $_ -split "\."
    if ($parts.Count -gt 1) { $parts[($parts.Count - 2)] }
    }


    Evgenij Smirnov

    msg services ag, Berlin -> http://www.msg-services.de
    my personal blog (mostly German) -> http://it-pro-berlin.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com

    In theory, there is no difference between theory and practice. In practice, there is.

    • Als Antwort markiert Schmidi_ch Mittwoch, 5. Oktober 2016 11:33
    Mittwoch, 5. Oktober 2016 11:26
  • Besten Dank für die schnelle Hilfe!

    Hat super geklappt!

    Jedoch verstehe ich den Code nicht genau


    Freundliche Grüsse

    Mittwoch, 5. Oktober 2016 11:34
  • Hallo,

    $_ ist der Platzhalter für das aktuell verwendete Objekt in der Pipeline. In einer 

    foreach($o in $Objects){...}

    -Schleife entspricht das dem $o.

    Mit -split wird ein String an dem angegebenen Zeichen zerlegt. Da hier ein Regulärer Ausdruck (schau mal danach in der Wikipedia: https://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck) verwendet wird, muss der Punkt (das ist dort ein Sonderzeichen) "escaped" werden. Das macht man mit einem Backslash: "\.".

    Damit hast du jetzt ein Array, versuch es mal am Beispiel:

    $arr = "www.wrike.com" -split "\."
    Nun möchtest du immer den letzten Eintrag. Ein Array wird von 0 an gezählt. Damit ist $parts[$parts.count -1] der letzte Eintrag. Der davor ist dann -2. Alternativ könntest du in PowerShell auch direkt $parts[-2] benutzen.


    • Bearbeitet hpotsirhc Mittwoch, 5. Oktober 2016 12:28
    Mittwoch, 5. Oktober 2016 12:14
  • Besten Dank für die Erläuterung :-)

    Freundliche Grüsse

    Donnerstag, 6. Oktober 2016 09:57