Leerzeilen in Datei nach sort - Befehl
Kann mir jemand sagen, woher die vielen Leerzeilen nach einem sort - Befehl stammen?
Vor diesem Befehl ist keine einzige Leerzeile in der Datei.
Kann man die Leerzeilen irgendiwe unterdrücken? (unter UNIX hilft ja /n damit man wenigstens nur eine Leerzeile hat, aber gibt es so etwas auch bei M$)
Vor diesem Befehl ist keine einzige Leerzeile in der Datei.
Kann man die Leerzeilen irgendiwe unterdrücken? (unter UNIX hilft ja /n damit man wenigstens nur eine Leerzeile hat, aber gibt es so etwas auch bei M$)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 36633
Url: https://administrator.de/forum/leerzeilen-in-datei-nach-sort-befehl-36633.html
Ausgedruckt am: 23.12.2024 um 08:12 Uhr
17 Kommentare
Neuester Kommentar
Moin CrazyCat,
ist mir zwar nicht bekannt, dass der Sort-Befehl zusätzliche Leerzeilen einstreut, aber -egal, wo die jetzt herkommen- wegfiltern kannst Du es z.B. mit einer zusätzlichen Filterung über FindStr.exe. Mit Findstr.exe alle Zeilen entsorgen, bei denen Zeilenende "$" direkt am Zeilenanfang "^" steht.
Beispiel:
..sortiert die Hilfe-Ausgabe von "Sort" (halt irgendeinen Text) und PIPEd das ganze weiter an FindStr.
Gruß
Biber
ist mir zwar nicht bekannt, dass der Sort-Befehl zusätzliche Leerzeilen einstreut, aber -egal, wo die jetzt herkommen- wegfiltern kannst Du es z.B. mit einer zusätzlichen Filterung über FindStr.exe. Mit Findstr.exe alle Zeilen entsorgen, bei denen Zeilenende "$" direkt am Zeilenanfang "^" steht.
Beispiel:
sort /?|sort|findstr /v "^$"
Gruß
Biber
Moin CrazyCat nochmal,
zu Deinen Fragen...
Find /v "" datei1.txt ---------->funktioniert jedenfalls nicht wie gewünscht und
Find /v " " datei1.txt ----------> bringt halt alle Zeile OHNE LeerZEICHEN incl der ganz leeren Zeilen.
Beispiel:
Gruß
Biber
[Edit] BTW: Ob die Ausgangsdatei tatsächlich keine leeren Zeilen enthält, kannst Du ja vorher mit dem FindStr-Befehl prüfen:
...würde Dir ja alle Zeilennummern anzeigen, die nach M$-Meinung leer sind.
Würde mich wirklich wundern, wenn der SORT-Befehl Leerzeilen hinzufügt.
[/Edit]
zu Deinen Fragen...
Bei einer Datei müßte das dann so aussehen:
sort datei1.txt|findstr /v "^$ > datei2.txt
In etwa ja.sort datei1.txt|findstr /v "^$ > datei2.txt
sort datei1.txt|findstr /v "^$">datei2.txt
€dit: Das ganze müßte doch auch mit "find" funktionieren, ....
Ich weiß nicht, ob Find.exe auch leere Zeilen im Sinne von "nicht mal ein Leerzeichen drin" finden kann.Find /v "" datei1.txt ---------->funktioniert jedenfalls nicht wie gewünscht und
Find /v " " datei1.txt ----------> bringt halt alle Zeile OHNE LeerZEICHEN incl der ganz leeren Zeilen.
oder ist findstr in dieser Hinsicht schneller?
Wieso? Esst ihr zeitig?Gibt es keinen direkten Weg die Dateien ohne Leerzeilen zu sortieren?
Keinen, den ich kenne... mehr würde ich nicht behaupten.Auf die Option /o von sort werde ich wohl verzichten müssen, oder?
Nein, warum? Kannst die PIPErei doch in alle Richtungen drehen.. ist doch ein freies Land hier.Beispiel:
>findstr f:\Datei1.txt /v "^$"|sort /o:x:\sortdata.txt
Gruß
Biber
[Edit] BTW: Ob die Ausgangsdatei tatsächlich keine leeren Zeilen enthält, kannst Du ja vorher mit dem FindStr-Befehl prüfen:
>findstr /n "^$" datei1.txt
Würde mich wirklich wundern, wenn der SORT-Befehl Leerzeilen hinzufügt.
[/Edit]
Na ja, CrazyCat,
dann wäre meine nächste Frage natürlich:
Ist denn ein "physisches" Sortieren der Messdaten nötig? Denn Sortiervorgänge (physisches Neuordnung der Datenzeilen) braucht immens viel Ressourcen.
Effizienter wäre ja ein "logische" Sortierung, also eine Indizierung der Daten-"Sätze" zu einem späteren Zeitpunkt (wenn die Daten in eine DB-Struktur importiert worden sind).
Im Moment ist der Ablauf bei Dir so, wenn ich das richtig verstehe:
a) - Entstehung/Bereitstellung der Messdaten in chronologischer Form
b) - Aufbereitung/Filterung spaltenweise per Batch
c) - physische SORTierung per Batch
d) - und dann? Import in Excel? Datenbank? Oder keine Weiterverarbeitung außer Archivierung?
Lässt sich die Reihenfolge nicht ändern in
a) - Entstehung/Bereitstellung der Messdaten in chronologischer Form
b) - Import in eine DB-Struktur
---> dadurch automatische "logische" Neuordnung via Index
---> Nicht-Übernahme der "uninteressanten" Spalten/Datenfelder?
Gruß
Biber
dann wäre meine nächste Frage natürlich:
Ist denn ein "physisches" Sortieren der Messdaten nötig? Denn Sortiervorgänge (physisches Neuordnung der Datenzeilen) braucht immens viel Ressourcen.
Effizienter wäre ja ein "logische" Sortierung, also eine Indizierung der Daten-"Sätze" zu einem späteren Zeitpunkt (wenn die Daten in eine DB-Struktur importiert worden sind).
Im Moment ist der Ablauf bei Dir so, wenn ich das richtig verstehe:
a) - Entstehung/Bereitstellung der Messdaten in chronologischer Form
b) - Aufbereitung/Filterung spaltenweise per Batch
c) - physische SORTierung per Batch
d) - und dann? Import in Excel? Datenbank? Oder keine Weiterverarbeitung außer Archivierung?
Lässt sich die Reihenfolge nicht ändern in
a) - Entstehung/Bereitstellung der Messdaten in chronologischer Form
b) - Import in eine DB-Struktur
---> dadurch automatische "logische" Neuordnung via Index
---> Nicht-Übernahme der "uninteressanten" Spalten/Datenfelder?
Gruß
Biber
Na ja, CrazyCat,
wenn doch aber die "Satzart" 1-4 offensichtlich als erstes Zeichen in jeder Zeile steht und alle "leeren Zeilen" ohnehin weggefiltert werden müssen, dann wäre doch die vermutlich schnellste "physische Sortierung" ohne SORT.
[für jede Messdatendatei in unsortierter Form:
Sollte schneller gehen als die Varianten mit SORT.
Gruß
Biber
wenn doch aber die "Satzart" 1-4 offensichtlich als erstes Zeichen in jeder Zeile steht und alle "leeren Zeilen" ohnehin weggefiltert werden müssen, dann wäre doch die vermutlich schnellste "physische Sortierung" ohne SORT.
[für jede Messdatendatei in unsortierter Form:
Findstr "^1" Messdatendatei.xyz>sortdata.txt
Findstr "^2" Messdatendatei.xyz>>sortdata.txt
Findstr "^3" Messdatendatei.xyz>>sortdata.txt
Findstr "^4" Messdatendatei.xyz>>sortdata.txt
Sollte schneller gehen als die Varianten mit SORT.
Gruß
Biber
Im Prinzip sind auch Windows XP und MacOS das Gleiche... haben auch ähnliche Funktionen. Oder mein Toyoto-Wrack und ein Mercedes SLK. Oder Angela Merkel und Madonna.
Find sucht nach Buchstaben oder Zeichenfolgen in Zeilen genau einer Textdatei.
Findstr kann dasselbe und darüber hinausgehend in mehreren Dateien/Verzeichnisstrukturen auch nach regulären Ausdrücken (=Suchmustern) suchen.
Einen praktischen Nutzen (der mit Find nicht erreichbar wäre) siehe oben: es lässt sich zum Beispiel am Satzanfang/Satzende suchen oder nach "Worten" mit bestimmtem Beginn oder Ende.
Mit "Find" kannst Du eben nicht nach Zeilen suchen, die mit "1", "2", "3" oder "4" beginnen, sondern nur nach Zeilen, die diese Zeichen enthalten. Das ist schon ein massiver Unterschied.
Gruß
Biber
Find sucht nach Buchstaben oder Zeichenfolgen in Zeilen genau einer Textdatei.
Findstr kann dasselbe und darüber hinausgehend in mehreren Dateien/Verzeichnisstrukturen auch nach regulären Ausdrücken (=Suchmustern) suchen.
Einen praktischen Nutzen (der mit Find nicht erreichbar wäre) siehe oben: es lässt sich zum Beispiel am Satzanfang/Satzende suchen oder nach "Worten" mit bestimmtem Beginn oder Ende.
Mit "Find" kannst Du eben nicht nach Zeilen suchen, die mit "1", "2", "3" oder "4" beginnen, sondern nur nach Zeilen, die diese Zeichen enthalten. Das ist schon ein massiver Unterschied.
Gruß
Biber
Hallo CrazyCat,
ich habe zu Deinem Problem mit den Leerzeilen mal eine ganz andere Frage:
Du schreibst, es sind nach der Sortierung viele Leerzeilen, obwohl vorher keine da waren.
Sind es am Ende evtl. genauso viele Leerzeilen, wie Meßwerte?
Könnte es evtl. sein, daß die Meßdatenerfassung und die Sortierung auf Rechnern mit unterschiedlichen OS stattfindet?
Bei Windows wird doch afaik bei Textdateien eine Zeile mit LF (Line feed) und CR (carriage return) abgeschlossen, während z.B. bei UNIX der Zeilenvorschub nur durch ein LF initialisiert wird.
Könnte das evtl. der Grund für die Leerzeilen sein?
ich habe zu Deinem Problem mit den Leerzeilen mal eine ganz andere Frage:
Du schreibst, es sind nach der Sortierung viele Leerzeilen, obwohl vorher keine da waren.
Sind es am Ende evtl. genauso viele Leerzeilen, wie Meßwerte?
Könnte es evtl. sein, daß die Meßdatenerfassung und die Sortierung auf Rechnern mit unterschiedlichen OS stattfindet?
Bei Windows wird doch afaik bei Textdateien eine Zeile mit LF (Line feed) und CR (carriage return) abgeschlossen, während z.B. bei UNIX der Zeilenvorschub nur durch ein LF initialisiert wird.
Könnte das evtl. der Grund für die Leerzeilen sein?
Moin CrazyCat,
dann eben Plan B...
...wenn sichergestellt ist, dass immer Leerzeilen dabei sind, dann lass vom MORE-Befehl "mehrere Leerzeilen zu einer zusammenfassen" (s.Hilfe zu More /?; Option /S).
Dann hast Du genau eine Leerzeile, und die kannst Du ggf. SKIPpen.
Hast Du denn die Variante mit den 4 FindStr-Zeilen hintereinander mal probiert?
Die sollte in der Theorie die vielversprechendste sein.
Gruß
Biber
dann eben Plan B...
...wenn sichergestellt ist, dass immer Leerzeilen dabei sind, dann lass vom MORE-Befehl "mehrere Leerzeilen zu einer zusammenfassen" (s.Hilfe zu More /?; Option /S).
Dann hast Du genau eine Leerzeile, und die kannst Du ggf. SKIPpen.
Hast Du denn die Variante mit den 4 FindStr-Zeilen hintereinander mal probiert?
Die sollte in der Theorie die vielversprechendste sein.
Gruß
Biber