👉 Jetzt bei Amazon nach deinem nächsten Gaming PCs stöbern (Affiliate-Link – ich erhalte eine kleine Provision, für dich bleibt der Preis gleich)

 

Programmieren in PowerShell eröffnet vielfältige Möglichkeiten der Automatisierung und Datenverarbeitung. Doch oft stehen wir vor dem Problem, dass wir zwar Zeilen mit bestimmten Übereinstimmungen finden können, aber es schwer ist, nur die genauen Übereinstimmungen zu extrahieren. In diesem Beitrag lernen Sie, wie Sie ein PowerShell-Skript erstellen können, das exklusiv die gewünschten Matches eines regulären Ausdrucks ausgibt.

Einführung in das Problem

Stellen Sie sich vor, Sie haben eine Textdatei voller Computernamen und Dateipfade. Ihre Aufgabe ist es, nur die Dateierweiterungen aus dieser Liste herauszufiltern. Die üblichen PowerShell-Befehle geben Ihnen jedoch oft die gesamte Zeile zurück, anstatt nur die spezifischen Übereinstimmungen. Wir werden Ihnen zeigen, wie Sie das Problem lösen und ausschließlich die Dateierweiterungen extrahieren können.

Lösung mit PowerShell

Schritt 1: Vorbereitung

Um mit regulären Ausdrücken in PowerShell zu arbeiten, benötigen Sie keine zusätzlichen Module. Alles, was Sie brauchen, ist in PowerShell bereits integriert.

Schritt 2: Skript zur Zeilenverarbeitung erstellen

Beginnen wir mit einem simplen Skript, das anhand eines regulären Ausdrucks die Dateierweiterungen aus Zeilen extrahiert:

# Liest die Datei zeilenweise ein
$lines = Get-Content -Path "pfad/zur/textdatei.txt"

# Durchläuft jede Zeile
foreach ($line in $lines) {
    # Verwendet regulären Ausdruck, um Dateierweiterungen zu finden
    if ($line -match "\.\w+$") {
        # Gibt die übereinstimmende Erweiterung aus
        Write-Output $matches[0]
    }
}
Code-Sprache: PowerShell (powershell)

Erläuterung

  • Get-Content: Liest die Datei zeilenweise ein. Ändern Sie den Pfad entsprechend Ihrer Datei.
  • foreach-Schleife: Iteriert durch jede Zeile in der Datei.
  • -match Operator: Überprüft, ob die Zeile eine Erweiterung hat, die dem regulären Ausdruck \.\w+$ entspricht. Dieser Ausdruck sucht nach einem Punkt gefolgt von einem oder mehreren alphanumerischen Zeichen bis zum Ende der Zeile.
  • $matches Array: Enthält alle Treffer des regulären Ausdrucks, wobei der erste Treffer unter dem Index [0] gespeichert wird.

Schritt 3: Alternative Methode mit Select-String

PowerShell bietet auch den Select-String Befehl, der das Durchsuchen von Dateien anhand von Mustern vereinfacht:

# Liest und durchsucht die Datei nach regulären Ausdrücken
$matches = Select-String -Path "pfad/zur/textdatei.txt" -Pattern "\.\w+$" -AllMatches

# Durchläuft alle Funde
foreach ($match in $matches) {
    # Gibt die spezifischen Übereinstimmungen aus
    foreach ($subMatch in $match.Matches) {
        Write-Output $subMatch.Value
    }
}
Code-Sprache: PowerShell (powershell)

Erläuterung

  • Select-String: Durchsucht die Datei nach dem angegebenen Muster und gibt alle Funde zurück.
  • $match.Matches: Enthält alle Funde für einen bestimmten Suchvorgang. Innerhalb dieser werden die genauen Werte ausgegeben.

Weiterführende Links

Hier sind einige nützliche Ressourcen, die Ihnen helfen können, Ihre Skills im Umgang mit PowerShell und regulären Ausdrücken zu erweitern:

Mit diesen Techniken können Sie Ihre PowerShell-Skripte optimieren und spezifische Informationen effizient extrahieren. Experimentieren Sie mit verschiedenen regulären Ausdrücken und passen Sie die Lösungen nach Bedarf an Ihre Anforderungen an.