Farbwörter in Powershell-Skriptformat-Tabellenausgabe

7

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.

    
EtienneT 09.09.2011, 13:09
quelle

4 Antworten

14

Sie könnten die Tabelle in Out-String pipen und dann die Zeichenfolge in Teile schreiben, indem Sie Write-Host mit dem Schalter -NoNewLine verwenden.

In etwa so:

%Vor%     
Rynant 09.09.2011, 13:46
quelle
5

Ich mag Rynant Ansatz. Hier ist eine alternative Implementierung mit -split anstelle von IndexOf :

%Vor%

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!

    
Emperor XLII 10.09.2011 00:47
quelle
3

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%     
stevethethread 22.09.2015 15:27
quelle
1
%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.

    
Daniel Cheng 13.01.2015 00:12
quelle

Tags und Links