Ist es möglich, nur bestimmte Wörter (nicht vollständige Zeilen) für eine Powershell-Ausgabe zu formatieren, die format-table verwendet? Beispielsweise scannt dieses Skript einen Ordner rekursiv nach einer Zeichenfolge und gibt das Ergebnis dann mit format-table aus.
%Vor%Es wäre schön, das Wort, nach dem wir suchen, mit einer bestimmten Farbe zu formatieren, damit Sie genau sehen können, wo es in der Zeile gefunden wurde.
Ich mag Rynant Ansatz. Hier ist eine alternative Implementierung mit -split
anstelle von IndexOf
:
Split enthält leere Strings, wenn die Zeile mit dem angegebenen Wort beginnt oder endet, daher die zusätzliche "wenn nicht zuerst" -Logik.
Bearbeiten: Nach Rynants Kommentar folgt hier eine weitere Implementierung, die sowohl einfache als auch reguläre Muster unterstützt:
%Vor%Die Ausgabe der folgenden Beispiele zeigt den Unterschied:
PS> '\d00\d!' | ColorPattern '\d' 'Magenta' -Simple
\d00\d!
PS> '\d00\d!' | ColorPattern '\d' 'Magenta'
\d00\d!
Ich liebe Antwort @Ryant gab. Ich habe hier eine modifizierte Version, die zum Einfärben mehrerer Wörter in einer Ausgabe verwendet werden kann, indem man Arrays oder Wörter und Farben übergibt. Der Trick besteht darin, dass Sie den Eingabetext basierend auf dem Zeilentrennzeichen in Zeilen teilen müssen.
%Vor%und würde wie folgt ausgeführt werden
%Vor%Irgendwie spät zu der Antwort, aber ich habe dies mit mehreren Regex-Unterstützung, sowie einfache Anpassung aktualisiert. Dies wurde unter Powershell v4.0 getestet.
Tags und Links powershell powershell-v2.0