Ich verwende ConvertTo-Csv
, um eine kommagetrennte Ausgabe zu erhalten
Es gibt aus wie:
%Vor%Ich möchte jedoch ohne Anführungszeichen ausgegeben werden, wie
%Vor% Ich habe heute an einem Tisch gearbeitet und über diese Frage nachgedacht, als ich die CSV-Datei im Notizblock vorhergesehen habe und entschieden habe, was andere gemacht haben. Es scheint, dass viele die Lösung überkompensiert haben.
Im Folgenden finden Sie eine einfache Möglichkeit, die Anführungszeichen aus einer CSV-Datei zu entfernen, die mit dem Export-Csv-Cmdlet in PowerShell erstellt wurde.
Erstellen Sie eine TEST.csv-Datei mit den folgenden Daten.
"ID", "Name", "Staat"
"5", "Stephanie", "Arizona"
"4", "Melanie", "Oregon"
"2", "Katie", "Texas"
"8", "Steve", "Idaho"
"9", "Dolly", "Tennessee"
Speichern unter: TEST.csv
Speichern von Dateiinhalten in einer $ Test-Variablen
$ Test = Get-Content. \ TEST.csv
Laden Sie die Variable $ Test, um die Ergebnisse des Cmdlets Get-Content anzuzeigen
$ Test
Laden Sie die $ Test-Variable erneut und ersetzen Sie alle (",") durch ein Komma, trimmen Sie dann den Anfang und das Ende, indem Sie jedes Anführungszeichen entfernen
$ Test.Replace ('","', ","). TrimStart ('"'). TrimEnd ('"')
Speichern / Ersetzen der Datei TEST.csv
$ Test.Replace ('","', ","). TrimStart ('"'). TrimEnd ('"') | Out-File. \ TEST.csv -Force -Bestätigen: $ false
Neue Datei testen Ausgabe mit Import-Csv und Get-Content:
Import-Csv. \ TEST.csv
Get-Content. \ TEST.csv
Um das Ganze zusammenzufassen, kann die Arbeit mit zwei Zeilen Code gemacht werden
$ Test = Get-Content. \ TEST.csv
$ Test.Replace ('","', ","). TrimStart ('"'). TrimEnd ('"') | Out-File. \ TEST.csv -Force -Bestätigen: $ false
Dies ist der angenommenen Antwort ziemlich ähnlich, aber es hilft, die unerwünschte Entfernung von "echten" Anführungszeichen zu verhindern.
%Vor%Dies wird Folgendes tun:
Daher würde der einzige Weg, der schiefgehen würde, darin bestehen, dass einer der Werte tatsächlich nicht nur Anführungszeichen enthält, sondern speziell eine Anführungszeichen-Anführungszeichenfolge, die hoffentlich ziemlich ungewöhnlich sein sollte.
Ich bin auf dieses Problem gestoßen, habe diese Frage gefunden, war aber nicht mit den Antworten zufrieden, weil sie alle zu leiden scheinen, wenn die von Ihnen verwendeten Daten ein Trennzeichen enthalten, das in Anführungszeichen gesetzt werden sollte. Die unnötigen doppelten Anführungsstriche zu entfernen ist eine gute Sache.
Die folgende Lösung scheint dieses Problem für einen allgemeinen Fall und für alle Varianten zu lösen, die Probleme verursachen könnten.
Ich habe diese Antwort woanders gefunden, Entfernen von Anführungszeichen aus CSV-Dateien, die von PowerShell erstellt wurden und zum Codieren einer Beispielantwort für die SO-Community verwendet haben.
Namensnennung: Kredit für die Regex, geht zu 100% an Russ Loski.
Code in einer Funktion, Remove-DoubleQuotesFromCsv
%Vor%Testcode
%Vor%Testausgabe
%Vor% Ich fand, dass Korys Antwort nicht für den Fall funktionierte, wo die ursprüngliche Zeichenkette mehr als ein leeres Feld in einer Reihe enthielt. I.e. "ABC" ,, "0" war in Ordnung, aber "ABC" ,,, "0" wurde nicht richtig behandelt. Es hörte auf, Zitate nach dem ",,, zu ersetzen. Ich habe es behoben, indem ich " |(?<output>)
" nahe dem Ende des ersten Parameters wie folgt hinzugefügt habe:
Tags und Links powershell