Entfernen Sie die Letzte Zeile aus der Datei mit Powershell
Ich bin mit
gc FileWithEmptyLines.txt | where {$_ -ne ""} > FileWithNoEmptyLines.txt
entfernen der leeren Zeilen, die SSRS setzt an der Unterseite meiner CSVs.
Jedoch die Letzte Zeile, die Daten enthält, endet mit einem CRLF (wie angezeigt im Notepad++) - und diese wird nicht entfernt, so technisch, es ist immer noch eine leere Zeile am Ende der Datei.
Gibt es eine Möglichkeit zu entfernen, das CRLF aus der letzten Zeile (und damit die Daten intakt, natürlich)?
- Das ist nicht "technisch". Es sei denn, die Datei endet mit CR LF CR LF, es ist keine leere Zeile am Ende. Technisch.
- Ignacio, das hängt davon ab, ob Sie verstehen es als line-Trenner oder Zeilenende-Zeichen 😉
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie bereits wissen, dass das Letzte, was in der Datei ist ein CRLF Sie loswerden wollen (und Sie wissen das-Kodierung) kann man den schnellen Weg:
Dies ist ein in-place-abschneiden der Datei. Es funktioniert ohne das Lesen der Datei in den Speicher (sehr schön, wenn Sie eine sehr große Datei). Es funktioniert für ASCII, Latin-* und UTF-8. Funktioniert es nicht, dass der Weg für UTF-16 (Sie hatte entfernen müssen vier bytes von dem Ende, in diesem Fall).
Können Sie eine zusätzliche überprüfung, dass die letzten beiden bytes sind wirklich, was Sie entfernen möchten:
Wieder umstellen, wenn man ein anderes encoding, z.B. für UTF-16 müssen Sie vergleichen entweder
0,10,0,13
oder10,0,13,0
.Vereinbart, ist dies nicht sehr PowerShell-ey, aber seitdem ich zu Bearbeiten hatte, eine 700-MiB-Datenbank-dump-ich bin vorsichtig Lesen potenziell große Dateien in den Speicher komplett 😉
Beim Lesen einer Datei mit
Get-Content
es strömt jede Zeile unten das Rohr als string. WennOut-File
(im Grunde das, was>
ist ein alias für) bekommt diese Saiten, dass es immer hängt eine Zeile terminator-Sequenz. Versuchen Sie Folgendes, wenn die Dateien nicht zu groß sind:Dies ist die Datei vor:
und nach:
Ich bin mir nicht sicher, wie zutreffend dies ist, um die situation, aber meine google-Suche für das entfernen der letzten Zeile einer Textdatei hat mich hierher geführt und die oben genannten Beispiele/Lösungen hat nicht funktioniert. Dies ist der Befehl, den ich verwenden konnte, um diese zum arbeiten:
Wenn Sie mit einer großen Datei, die Sie möchten möglicherweise Rohr diese, um eine temp-Datei zuerst.
Für "UCS-2 Little Endian" - Datei-format, verwenden Sie diese:
Versuchen, auch wenn es entfernt ALLE leeren Zeilen aus der Datei