2016-07-21 8 views
0

Nachdem ich GCI ich die Ausgabe unten bekam:Strings in mehreren Zeilen ersetzen

C:\mine\this is the filename I want to keep -blah blah.csv:11:"Windows User","BrftD","Bledaf","Internal user" 
C:\mine\it is a different filename I want to keep -bleh blih.csv:12:"Windows User","BrftD","Bledaf","Internal user" 

Ich brauche eine etwas zu ersetzen ersetzen, bevor „\“ und nach dem „-“ bis „:“ mit " 'und' “,‘ so der Ausgang

"this is the filename I want to keep","Windows User","BrftD","Bledaf","Internal user" 
"it is a different filename I want to keep","Windows User","BrftD","Bledaf","Internal user" 

das Skript sein würde, ist:

gci *.csv | Select-String -pattern '"Windows User"'|Set-Content csvdatacol.csv 
Get-Content csvdatacol.csv 
+0

Sind Sie sicher, dass das * eine * mehrzeilige Zeichenfolge ist? 'Get-ChildItem' (alias' gci') erzeugt keine Ausgabe, die so formatiert ist - können Sie uns genau zeigen, welchen Befehl Sie ausgeführt haben? –

+0

Ich habe den Post bearbeitet :) – Atermon

+0

Weisen Sie die Ausgabe einer Variablen zu, statt Set-Content/Get-Content. Verwenden Sie dann Select-Object, um den Dateinamen und die Zeile zu erfassen –

Antwort

0

Dies sollte für Sie arbeiten

Get-ChildItem *.csv | 
    Select-String -Pattern '"Windows User"' | 
    % { '"{0}",{1}' -f ($_.FileName -replace '-.*', '').TrimEnd(), $_.Line }